- ベストアンサー
PostgresSQLのSELECT文で大項目を一気に取得する方法
- PostgresSQLのSELECT文を使用して、テーブルから大項目1から大項目4の値を一気に取得する方法について教えてください。
- テーブル図がずれているため、PostgresSQLでのSELECT文の使い方がわかりません。大項目1から大項目4の値を一度に取得するSELECT文を教えてください。
- 私はPostgresSQLでのSELECT文の正しい書き方を知りません。テーブルの大項目1から大項目4の値を一度に取得する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
見たままの情報からいくと、以下のような感じでしょうか。 (見づらくてすみません。) 考え方としては、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)
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
>いろいろなID_NAMEが存在し、それに紐づくSUB1~SUB5までのコードを >使ってID_NAMEを出す SUB1~SUB5のコード体系を示さなければ、誰も回答ができません。 それにID_NAMEの値の種類は、何個あるのですか? すべて横に並べて1回の検索で返す場合、個数が固定でないと単一のSQLでは困難であり、何らかの言語でプログラムを組む必要があります。 DB設計自体を見直した方が良いのでは?
補足
すみません、 PHPで動的に値をセットさせます。 よろしくお願いいたします。
補足
ありがとうございます。 すみません、補足させていただきます。 あくまでも上記の回答だと、質問でかいた値しか入っていないことが前提になってくるかと思いますが、 本来の値は「大項目1 大項目2 大項目3 大項目4」だけではなく、いろいろなID_NAMEが存在し、それに紐づくSUB1~SUB5までのコードを使ってID_NAMEを出す場合はどうするのでしょうか?