2016-03-24 21 views
0

katılma işlemi: Aşağıdaki sorguyu yürüttükten sonra,benzersiz kimlik aşağıdaki şemayı sahip

Table ticket 

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

Table terrlocation 

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

Yani:

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

Ben alırsınız:

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

Ama benim görev, bilete bağlı olan terrokasyonda herhangi bir kayıt varsa, 1 ve eğer 0'dan daha büyük değil. AŞAĞIDAKİ KORUMA AÇABİLİRİM, AMA, BİRİNCİ OLMAK ÜZERE 3 KAYIT OLABİLİRİM.

ben gitmeden de alt sorgu koymak gerekir

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

gibi bir şey KATILIN Ama çalışıyor gelmez geliyor bana. Amacımı nasıl sağlayabilirim? M.B. CTE yoluyla daha iyi?

+0

Adam Ne yapmaya çalıştığını anlamakta zorlanıyorum ... ilk sorgunuz için yaptığınız gibi "çıkış istedim" i düşürmeyi tercih edersiniz? – Veljko89

cevap

1

DISTINCT'u kullandığınızda, ayırt edilmesi gereken sütunları belirtmeniz gerekir! Bunu dene:

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

Utanç üzerimde, bu yüzden bu kadar dolu bir hata. Yardım için teşekkürler. – Cove

İlgili konular