2011-07-27 13 views
16

SQL'de hiç konuşmayan biri olmadığından, bir çocukta hiçbir kayıt bulunmayan bir üst tablodaki tüm kayıtları bulabilecek bir sorguyla bana yardımcı olabileceğini umuyordu tablo.Çocuk kayıtları olmadan ebeveyn kayıtlarını bulmak için SQL Sorgusu'na gereksinim var

beni spesifik çocuk alan değerleri için üst kayıtlarını bulmak için aşağıdaki eserlerini ...

`SELECT ParentTable.ParentID 
FROM  ParentTable INNER JOIN 
      ParentTable ON ParentTable.ParentID = ChildTable.ChildID 
WHERE  (ChildTable.ChildField_ = '2131') 
Group By 
    ParentTable.ParentID 
Having 
    count(distinct ChildTable.ChildField) > 0` 

nerede maddesinin değiştirilmesine Can sıfır alt kayıtlar sayısı ile beraber ebeveynin nasıl bulacağını bazılarıdır.

Teşekkürler.

+1

Sadece "HAVING" deyiminde '' 'ile değiştirmediniz mi? – zerkms

+0

user278859 Eğer basit bir iç birleşim ekliyorsanız, clouse (grup tarafından yürütülecek olana kadar) nerede oluncaya kadar istediğiniz ebeveyn kimliğini vermeyecektir ... bu yüzden ya varoluşunuzu kullanmamalısınız ya da sol ya da ... @zerkms: - o zaman '=' işareti –

cevap

52

sahip bu

SELECT ParentTable.ParentID 
FROM ParentTable 
WHERE NOT EXISTS (
    SELECT 1 FROM ChildTable 
    WHERE ChildTable.ParentID = ParentTable.ParentID 
) 

için NOT EXISTS maddesini kullanabilir Orada da var eski katılmak sol ve denetleyin null yaklaşıyor ve hangisinin sizin için daha iyi çalıştığını görün.

+0

İlk büyük çalıştı. Teşekkür ederim! – user278859

+0

Her ikisi de benim için çalışıyor, teşekkürler! – Gaucho

3

Dış çocuğa ebeveyni katılmak ve ardından sayımı (*) = 0 değerini

select 
    p.parent_id, 
    count(*) 
from 
    parent p left outer join child c on p.parent_id = c.parent_id 
group by 
    p.parent_id 
having 
    count(*) = 0 
+0

oralarda kayda geçtikten sonra hiçbir kayıt almayacaksınız. Sorguyu 'p.parent_id = c.parent_id * 'olarak değiştirmediniz. oracle de aynı türden bir çalışma ile (+) 'yapmalı ve çocuk masasına eklemeliyiz (bu durumda) –

+0

Evet, ebeveyn-çocuktan dış birleşme, çocuk yokken bile ana-babaya dönecektir. *) 0 olacak – rkaregaran

+0

Doğru -;) Bazı kötü ansi-92 alışkanlıkları var ... – rkaregaran

İlgili konular