• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PostgresSQL のSQL文について(SELECT) :2)

PostgresSQLのSELECT文で大項目を一気に取得する方法

このQ&Aのポイント
  • PostgresSQLのSELECT文を使用して、テーブルから大項目1から大項目4の値を一気に取得する方法について教えてください。
  • テーブル図がずれているため、PostgresSQLでのSELECT文の使い方がわかりません。大項目1から大項目4の値を一度に取得するSELECT文を教えてください。
  • 私はPostgresSQLでのSELECT文の正しい書き方を知りません。テーブルの大項目1から大項目4の値を一度に取得する方法を教えてください。

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

  • ベストアンサー
  • xKENx
  • ベストアンサー率65% (21/32)
回答No.1

見たままの情報からいくと、以下のような感じでしょうか。 (見づらくてすみません。) 考え方としては、SUB1を取得するためのサブクエリーL1、SUB2用のL2…とそれぞれ作成して結合しています。 SELECT L1.ID_NAME,L2.ID_NAME,L3.ID_NAME,L4.ID_NAME FROM       (SELECT * FROM KOUMOKU WHERE SUB1 IS NOT NULL AND SUB2 IS NOT NULL AND SUB3 IS NOT NULL AND SUB4 IS NOT NULL AND SUB5 IS NULL) L4 LEFT JOIN (SELECT * FROM KOUMOKU WHERE SUB1 IS NOT NULL AND SUB2 IS NOT NULL AND SUB3 IS NOT NULL AND SUB4 IS NULL AND SUB5 IS NULL) L3 USING (SUB1,SUB2,SUB3) LEFT JOIN (SELECT * FROM KOUMOKU WHERE SUB1 IS NOT NULL AND SUB2 IS NOT NULL AND SUB3 IS NULL AND SUB4 IS NULL AND SUB5 IS NULL) L2 USING (SUB1,SUB2) LEFT JOIN (SELECT * FROM KOUMOKU WHERE SUB1 IS NOT NULL AND SUB2 IS NULL AND SUB3 IS NULL AND SUB4 IS NULL AND SUB5 IS NULL) L1 USING (SUB1)

fm0606
質問者

補足

ありがとうございます。 すみません、補足させていただきます。 あくまでも上記の回答だと、質問でかいた値しか入っていないことが前提になってくるかと思いますが、 本来の値は「大項目1 大項目2 大項目3 大項目4」だけではなく、いろいろなID_NAMEが存在し、それに紐づくSUB1~SUB5までのコードを使ってID_NAMEを出す場合はどうするのでしょうか?

その他の回答 (1)

回答No.2

>いろいろなID_NAMEが存在し、それに紐づくSUB1~SUB5までのコードを >使ってID_NAMEを出す SUB1~SUB5のコード体系を示さなければ、誰も回答ができません。 それにID_NAMEの値の種類は、何個あるのですか? すべて横に並べて1回の検索で返す場合、個数が固定でないと単一のSQLでは困難であり、何らかの言語でプログラムを組む必要があります。 DB設計自体を見直した方が良いのでは?

fm0606
質問者

補足

すみません、 PHPで動的に値をセットさせます。 よろしくお願いいたします。