次のテーブルがあります。
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 は、結合した結果に対して行っています。
クエリーの扱いが一番便利です。
他の言語はどうしているんでしょうねぇ。。。