- ベストアンサー
複数テーブルからデータ取得について
- 初めて投稿します。よろしくお願いします。SQLを使うのが初めてなので勉強をしながら作業を行なっています。そのため説明不足などありましたらご指摘願います。
- 下記SQL文より、該当データの抽出は出来たのですが、この3つのSQL文を一つのSQL文にて該当データを取得したいのですが、なかなか解決出来ないので宜しくお願いします。
- KAIINMSTテーブルをLEFT JOIN で他のテーブルデータを結合して欲しいです。KAIINMASTの会員CDに対して他テーブルの該当データが存在しない場合は、NULLを設定して下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この手のテーブルは常識的に会員CD+更新カウンターで主キーになっているものですが、そうであれば、GROUPは必要ありません。 SELECT k.会員CD, k.郵便番号, k.住所, k.番地, k.方書, s.送付郵便, s.送付住所, s.送付番地, s.送付方書, d.代理会員CD, d.会員区分 FROM (SELECT * FROM KAIINMST k1 WHERE 更新カウンター IN (SELECT MAX(更新カウンター) FROM KAIINMST WHERE 会員CD=k1.会員CD)) k LEFT OUTER JOIN (SELECT * FROM KAIINSOF s1 WHERE 業務CD='20' AND 更新カウンター IN (SELECT MAX(更新カウンター) FROM KAIINSOF WHERE 会員CD=s1.会員CD)) s ON s.会員CD=k.会員CD LEFT OUTER JOIN (SELECT * FROM DAIRI d1 WHERE 業務CD='20' AND 更新カウンター IN (SELECT MAX(更新カウンター) FROM DAIRI WHERE 会員CD=d1.会員CD)) d ON d.会員CD=k.会員CD ORDER BY k.会員CD ついでにSQL Server 2003というのもありませんが。。
その他の回答 (1)
- tsukachan
- ベストアンサー率42% (202/470)
一つのレコードセットにまとめたいんですよね? ユニオンクエリでググってみましょう。 http://orakumiko.hp.infoseek.co.jp/tips/q_tryunion.html ↑ ググった結果で簡単なものです。 3つのクエリをユニオン(繋げて)一つのクエリに見せかける方法です。 参照しかできませんけどね。
補足
早速の解答ありがとうございます。 ユニオンクエリで結合させるという事なのですが、 ユニオンクエリは、列数と型に互換性がある結果セットを結合することができるのではないのでしょうか? 例えば下記のテーブルがあります。 テーブル項目にありませんが、各テーブルには、会員CD毎に履歴があります。(更新カウンター) KAIINMSTテーブル 会員CD 郵便番号 住所 番地 方書 更新カウンター 0001, 111-1111, AAAA, BBBB, CCCCC, 1 0001, 111-1111, AAAA, BBBA, CCCCB, 2 0002, 111-1111, DDDD, EEEE, FFFFF, 1 0003, 222-2222, GGGG, HHHH, IIIII, 1 KAIINSOFテーブル 会員CD 送付郵便 送付住所 送付番地 送付方書 更新カウンター 0002, 333-3333, JJJJ, KKKK, LLLL, 1 0002, 333-3333, JJJJ, KKKK, LLL2, 2 0003, 444-4444, MMMM, NNNN, OOOO, 1 DAIRIテーブル 会員CD 代理会員CD 会員区分 更新カウンター 0001, 0004, 01, 1, 0001, 0005, 01, 2, 抽出結果としては、 会員CD郵便番号 住所 番地 方書 送付郵便 送付住所 送付番地 0001, 111-1111, AAAA, BBBA, CCCCB,null, null, null 0002, 111-1111, DDDD, EEEE, FFFFF,333-3333, JJJJJ, KKKK 0003, 222-2222, GGGG, HHHH, IIIII,444-4444, MMMMM, NNNN 送付方書 代理会員CD 会員区分 null, 0005, 01 LLL2, null, null OOOO, null, null こんな感じでテーブルデータを抽出して結合がしたいのですが、 できますでしょうか? 宜しくお願いします。
お礼
お礼が遅くなりすいませんでした。 お陰様で、意図したデータ抽出が出来ました。 ありがとうございました。 ちなみに、SQL SEVER 2005の間違いでした。