Ads By Google
SQLでの副問い合わせ(サブクエリ)について教えて下さい。自分の出したい結果が思うように得られず悩んでおります。
結果を得たものをCSVに落としたいわけですが”見え方”ヴィジュアル面に問題があります。
欲しい結果をそれぞれSQLにしますと
≪受注表テーブルから≫
SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003' ;
SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020' ;
≪入荷表テーブルから≫
SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701' ;
SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630' ;
≪欲しい結果の見え方≫
担当 顧客コード 担当 顧客コード 担当 入荷日 担当 入荷日
── ───── ── ───── ── ─── ── ─────
田中 003 田中 020 田中 20080701 田中 20080630
田中 003 田中 020 田中 20080701 田中 20080630
このように関係のないレコードを横並びにするにはどうしたらよいでしょうか?
使っているDBはOracle10、SQL server、MySQL、HiRDBそれぞれで実行したいのですが・・・
どなたかご教示ください。
2008-07-13 01:43の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。
回答(1)
1.
2008-07-14 00:13:17

単純に副問い合わせを使って、データを横に並べたいのであれば、以下のようなSQLでできると思います。
※SQLを実行して試したわけではありません。
動く保証はしませんのでご注意を…
SELECT
但し、上記のSQLでは、受注1,受注2,入荷1,入荷2のデータが全て存在する場合のみしかデータが出力されません。
受注1が存在すれさえすれば、他のデータがなくても出力したいのであれば、INNER JOINをLEFT OUTER JOINに変えて下さい。
※SQLを実行して試したわけではありません。
動く保証はしませんのでご注意を…
SELECT
受注1.担当, 受注1.顧客コードFROM (
SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003') 受注1 INNER JOIN ( SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020') 受注2 ON 受注1.担当 = 受注2.担当 INNER JOIN ( SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701') 入荷1 ON 受注1.担当 = 入荷1.担当 INNER JOIN ( SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630') 入荷2 ON 受注1.担当 = 入荷2.担当
但し、上記のSQLでは、受注1,受注2,入荷1,入荷2のデータが全て存在する場合のみしかデータが出力されません。
受注1が存在すれさえすれば、他のデータがなくても出力したいのであれば、INNER JOINをLEFT OUTER JOINに変えて下さい。
回答レベル : アドバイス
Ads By Google
コメント
まだコメントがありません



