2016-03-24 5 views
0

に参加しながら、次のクエリを実行した後、固有のID、次のスキームを持つ

Table ticket 

- **ticketid** int; 
- **terr** int; 

Table terrlocation 

- **terrid** int; 
- **terr_desc** int; 

ので:

SELECT * FROM ticket tck 
LEFT JOIN terrlocation ter on tck.terr = ter.terrid 

は私が買ってあげる:

ticketid | terr | terrid | terr_desc 
-------------------------------------- 
01  | 02 | 02  | A  
01  | 02 | 02  | B 
01  | 02 | 02  | C 

をしかし、私のタスクは、私が得るよりも、チケットに接続されているterribocationのレコードがあるかどうかをチェックすることです。 1と0以外であれば、私は大文字小文字を使ってそれを達成することができますが、私は1つではなく3つのレコードを取得します。

は、私がLEFTでサブクエリを配置する必要があり

SELECT * FROM ticket tck LEFT JOIN ((SELECT DISTINCT FROM terrid) 
terrlocation ter on tck.terr = ter.terrid) 

のようなものを登録しよう。しかし、それは働いていないように私には思えます。どうすれば目標を達成できますか? M.b. CTEを通じてより良いですか?

+0

男私は何をしようとしているのか分かりません...最初のクエリと同じように、 – Veljko89

答えて

1

DISTINCTを使用するときは、区別する必要がある列を指定する必要があります。これを試してみてください:

SELECT tck.*,CASE WHEN t.terrid is null THEN 0 else 1 end as Your_IND 
FROM ticket tck 
LEFT JOIN (SELECT DISTINCT terrid FROM terrlocation) t 
on tck.terr = t.terrid 
+0

私は恥ずべきです。手伝ってくれてありがとう。 – Cove

関連する問題