次のテーブルがあります。
Type 1 2 3 Name テニス 野球 サッカー
別のテーブルがあります。
Type 3 4 5 Name サッカー バレーボール 卓球
それぞれのクエリを作成し結合。それぞれのクエリを確認
<cfset type = [1,2,3]>
<cfset name = ["テニス","野球","サッカー"]>
<cfset qry1 = QueryNew("")>
<cfset QueryAddColumn(qry1, "type", "integer", type)>
<cfset QueryAddColumn(qry1, "name", "varchar", name)>
<cfset type = [3,4,5]>
<cfset name = ["サッカー","バレーボール","野球"]>
<cfset qry2 = QueryNew("")>
<cfset QueryAddColumn(qry2, "type", "integer", type)>
<cfset QueryAddColumn(qry2, "name", "varchar", name)>
<cfquery name="qry3" dbtype="query">
select * from qry1
union
select * from qry2
</cfquery>
<cfdump var="#qry1#" label="qry1">
<cfdump var="#qry2#" label="qry2">
<cfdump var="#qry3#" label="union qry">
上記の場合は、重複データを除いて結合したものです。
重複データは除かず、Typeを大きい順にしてみます。
<cfquery name="qry3" dbtype="query"> select * from qry1 union all select * from qry2 order by type desc </cfquery>
order by は、結合した結果に対して行っています。
クエリーの扱いが一番便利です。
他の言語はどうしているんでしょうねぇ。。。