関連する行のいずれかを使用してエンティティを指定することによって、関連するすべての行を単一のエンティティに取得しようとしています。SQLはすべての結合要素を取得し、結合テーブルを介して結合エンティティを指定します。
CREATE TABLE entity (
id INTEGER PRIMARY KEY
)
CREATE TABLE related (
id INTEGER PRIMARY KEY
key VARCHAR(32) UNIQUE NOT NULL
entity_id INTEGER FOREIGN KEY (`entity.id`)
)
私は、特定のentity
ためrelated
すべての行をしたいが、私は参加を行う方法がわからないです、私はいつも私が間接参照に使用していたキーを持つ唯一の関連を取得します。
SELECT
*
FROM
entity e,
related r
JOIN
related r1
WHERE
e.id = r.entity_id
AND r.key= 'lookup key'
AND r1.entity_id = e.id;
私は
INSERT INTO entity VALUES (1, 2);
INSERT INTO related VALUES (1, 'lookup key' 1),
(2, 'other key' 1),
(3, 'another key' 1),
(4, 'this key' 2),
(5, 'that key' 2),
(6, 'their key' 2);
を実行するのであれば、私は
entity.id related.id related.key related.entity_id
1 1 lookup key 1
1 2 other key 1
1 3 another key 1
をしたいしかし、私はいつも
entity.id related.id related.key related.entity_id
1 1 lookup key 1
を取得し、私はこの
を望んでいませんentity.id related.id related.key related.entity_id
1 1 lookup key 1
1 2 other key 1
1 3 another key 1
2 4 this key 2
2 5 that key 2
2 6 their key 2
私はSQLが100%正しくないことを知っています。
あなたの質問を編集し、サンプルデータと希望する結果を提供してください。 –
@GordonLinoff質問をより完全にするために変更を加えました – shane