• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ある条件でのSQLの取得方法について)

SQLの取得方法とは?

このQ&Aのポイント
  • SQLの取得方法について分からない場合、以下の条件を考慮してテーブルのデータを取得する方法を検討する必要があります。
  • 条件として、テーブルAのキーとテーブルBのキーの繋がりを考慮し、テーブルAの情報とテーブルBの情報を結合する必要があります。
  • また、テーブルBの項目2が同じ値のデータがある場合は、項目2が同じデータの情報も取得する必要があります。SQLやPL/SQLを使用してこの結果を取得できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

環境が無いので試してませんが、こんな感じかな。 SELECT A.キー, 'テーブルA' AS フラグ, A.項目1, NULL AS 項目2, NULL AS 項目3, NULL AS 同じキー, NULL AS 同じ値 FROM テーブルA AS A UNION ALL SELECT B.キー, 'テーブルB' AS フラグ, NULL AS 項目1, , B.項目2, B.項目3, C.キー AS 同じキー, C.項目3 AS 同じ値 FROM テーブルB AS B LEFT JOIN テーブルB AS C ON B.項目2 = C.項目2 AND B.キー <> C.キー ORDER BY 1, 2, 4 ※テーブルBにあってテーブルAに無いものをどうするかは考慮してません。

evaan
質問者

お礼

お礼がとっても遅くなってしまいました。すみません。 無事解決しています。

その他の回答 (1)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

>■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は別レコードとして取得します。 という条件からテーブルBのうち、テーブルAに存在するキーのみのレコードを取得すると思われるので、 yorozu_yaさんのSQLの一部だけ変えて、 SELECT A.キー, 'テーブルA' AS フラグ, A.項目1, NULL AS 項目2, NULL AS 項目3, NULL AS 同じキー, NULL AS 同じ値 FROM テーブルA A UNION ALL SELECT B.キー, 'テーブルB' AS フラグ, NULL AS 項目1, B.項目2, B.項目3, C.キー AS 同じキー, C.項目3 AS 同じ値 --FROM テーブルB AS B FROM (SELECT * FROM テーブルB B WHERE EXISTS (SELECT * FROM テーブルA A WHERE A.キー = B.キー)) B LEFT JOIN テーブルB C ON B.項目2 = C.項目2 AND B.キー <> C.キー ORDER BY 1, 2, 4; で希望の結果になると思われます。 (Oracleだとテーブル別名指定時にASは使えないので消してあります) この回答でうまくいくようであれば、ベストアンサーはyorozu_yaさんにお願いしますm(__)m

関連するQ&A