ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

2種類のデータを検索する方法

一般的な郵便番号と、大手の会社に割り当てられれる郵便番号の両方を検索しなければならなくなりました。
以下の2ページからダウンロードしたCSVファイルが検索の対象となります。
読み仮名データの促音・拗音を小書きで表記するもの - zip圧縮形式 日本郵便


事業所の個別郵便番号のダウンロード zip形式 - 日本郵便


検索する方法を考える

CSVの列の並び順が一致していないので、同一のテーブルに挿入して検索するのは、早々に諦めました。
次に思ったのは、片一方のテーブルを検索して、結果が空だったら、もう片一方のテーブルを検索する方法です。
それでシステムに反映しようかと思ったところで、UNIONを思い出しました。
早速UNIONを使ったクエリを試したところ、目的通りの結果を得られました。

作成したSQL

SELECT field1, field2, field3, NULL AS field4 FROM zipcode WHERE zip= 1110100 
UNION 
SELECT field1, field2, field3, field4 FROM zip_zipcode WHERE zip = 1110100

カラム数が異なるため、NULLに列名の別名を設定して、カラム数を合わせています。


こういうときは最初から、UNION使えばできることに気づかないといけないですね。