これは簡単な質問かもしれませんが、私はどこにも答えを見つけることができません。問題の抽象化されたバージョンは次のとおりです。
- 「Key」という名前の列と「Value」という名前の列を持つテーブル「Data」があります
- 「ID」、「Key1」、「Key2」という名前の列を持つ別のテーブル「Users」があります
- 列「ID」、「Value1」、および「Value2」を与えるある種の結合が必要です。ここで、Value1はKey1の値であり、Value2はKey2の値です。
試す
select u.id, d1.v as v1, d2.v as v2 from users u
inner join data d1 on u.k1 = d1.k
inner join data d2 on u.k2 = d2.k
SQLFiddleで動作することを確認できます
select d1.value, d2.value from Users
inner join Data d1 on users.key1 = d1.key
inner join Data d2 on users.key2 = d2.key
SELECT
a.ID,
b.Value AS Value1,
c.Value AS Value2
FROM
users a
INNER JOIN
data b ON a.Key1 = b.Key
INNER JOIN
data c ON a.Key2 = b.Key