0

こんにちは、ここで助けが必要です...

私のクエリは次の結果を示しています:

Id      name           color    Version
1       leather        black      1
1       leather        brown      2
2       suede          brown      1
3       cloth          green      1
3       cloth          blue       2

私は以下を表示したい:

Id      name           color    Color_2    
1       leather        black      brown     
2       suede          brown      
3       cloth          green      blue

クエリは現在単純です

SELECT ID, NAME, COLOR,VERSION
FROM table1,table2  
WHERE table1.ID = table2.ID 
AND id in 
    (SELECT ID 
    FROM table1,table2 
    WHERE table1.ID = table2.ID  
    AND VERSION in ('1'))
AND VERSION in ('1','2')
4

3 に答える 3

0

あなたのデータベースの種類は少し変わっています...それは mysql ですか、それとも oracle ですか? とにかく、selectステートメントでオラクルを推測しています。私は「結合」ベースの構文を使用しています。ここにあるものよりも読みやすいと思います。バージョン 1 の select ステートメントを取り、それをバージョン 2 の select ステートメントに左結合します。バージョン 3 がある場合は、そこに別の結合を入れます。

select a.id, a.name, a.colour, b.colour
from (select * from table1 where version = 1) a
left join (select * from table1 where version = 2) b
 on a.id = b.id

(これは、バージョン 1 が常に存在し、バージョン 1 がなければバージョン 2 が存在しないことを前提としています)

于 2013-09-23T16:37:54.290 に答える