これが可能かどうかはわかりませんし、説明するのは確かに難しいです。
SELECT
次の方法でクエリを返したいと思います。
pID | 名前 | メール | 犬の名前 | 魚の名前 -------------------------------------------------- ----- 44 | ジョン | ジョン | john@email.com | だらしない | 56 | ジェーン | jane@email.com | | | フグ 72 | ジョー | ジョー | joe@email.com | スパーキー | ギル
3 つのテーブルがあります。
tbl_option_fields
tbl_person
tbl_person_optionals
最初のテーブルは、単純に無制限のオプション フィールドを定義しています。列は次のとおりです。
オプティッド | opttitle ------------------ 1 | 犬の名前 2 | 魚の名前 3 | Eメール
2 番目のテーブルは単純に、人々のデータを保持する場所です。
pID | 名前 --------------- 44 | ジョン 56 | ジェーン 72 | ジョー
最後のテーブルには、pID
ID | pID | オプティッド | オプトヴァル ---------------------------------- 1 | 44 | 1 | みすぼらしい 2 | 56 | 2 | フグ 3 | 72 | 1 | スパーキー 4 | 72 | 2 | ギル 5 | 72 | 3 | joe@email.com 6 | 56 | 3 | jane@email.com 7 | 44 | 3 | john@email.com
SELECT ステートメントの結果はopttitle
、結果のヘッダーに表示される必要があります。私はサブクエリが苦手で、これは大変なことかもしれません。
これが私の試みです:
SELECT p.*, opt.optval
FROM `tbl_person` p
LEFT OUTER JOIN `tbl_person_optionals` opt ON p.pID = opt.pID
WHERE 1
このクエリにより結果が重複しますが、その理由は理解できたと思います。
pID | 名前 | オプトヴァル ------------------------------ 44 | ジョン | ジョン | john@email.com 44 | ジョン | ジョン | みすぼらしい 56 | ジェーン | jane@email.com 56 | ジェーン | フグ 72 | ジョー | ジョー | joe@email.com 72 | ジョー | ジョー | スパーキー 72 | ジョー | ジョー | ギル
行に新しいレコードを表示するのではなく、オプション フィールドを水平方向に表示したいということを説明できれば幸いです。これはできますか?