2016-05-20 12 views
2

1つの項目が真であるときに1を返すSQL文を設定しようとしています。SQLブール型の多対多

だから私は関係なく、この同じキーの組み合わせは、私は感謝しています

1として、それは常に is blue presentを持つ必要があります含まれている他の何色ブルー colorを持たない IDID2のキーを組み合わせている時には、上記の表を使用して
ID | ID2 | color | is blue present 
--------------------------------------- 
1 | 12 | blue | 1 
1 | 12 | red | 1 
1 | 13 | red | 0 

助けを求めて

+2

を私は青色でレコードを持っているID/ID2キーのリストを取得することから始めたいです。次に、このテーブルに参加し、キーが青のテーブルにある場合は、フラグを1に設定し、0以外の場合は0に設定します。 – OpiesDad

+2

'CASE WHEN'を使用します。これにより、必要な結果が得られます。 – JT4U

+0

RDBMSを指定していません。 [SQL Server](https://msdn.microsoft.com/en-us/library/ms181765.aspx)... [Oracle](http://docs.oracle.com/cd/B19306_01/server)の場合。 102/b14200/expressions004.htm)。 –

答えて

0

あなたが左に参加できる唯一の青の値を取得するクエリでの問い合わせ:

SELECT a.id, a.id2, a.color, 
      CASE WHEN b.id IS NOT NULL THEN 1 ELSE 0 END AS is_blue_present 
FROM  mytable a 
LEFT JOIN mytable b ON a.id = b.id AND a.id2 = b.id2 AND b.color = 'blue'