Besoin de Requêtes SQL pour trouver des enregistrements Parents sans enfant enregistrements
Je ne suis pas du tout au courant en SQL donc espérais que quelqu'un pourrait m'aider avec une requête qui vous permettra de trouver tous les enregistrements dans une table parent pour lequel il n'y a pas d'enregistrements dans une table d'enfant.
Les ouvrages suivants, pour moi de trouver des enregistrements parent pour l'enfant en particulier les valeurs de champ...
`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`
Puis-je modifier la clause where d'une façon de trouver des parents avec un nombre de zéro des enregistrements enfants.
Grâce.
- N'avez-vous pas changé
>
avec=
dansHAVING
clause? - user278859 si vous êtes appling simple jointure interne il ne donnera pas souhaité id parent jusqu'où paragraphe (avant le groupe par exécutera)... donc, soit vous devez utiliser n'existe pas ou à gauche ou à droite rejoindre comme suggéré par phil... @zerkms :- alors vous ne sera pas obtenir tous les enregistrements après appling ` = ` signe qu'il y a dessus
- Je ne comprends pas le fait que la question ci-dessus a beaucoup de upvotes
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
NOT EXISTS
clause pour cetteIl y a aussi le vieux left join et vérifier la valeur null approche
Essayer les deux et voir ce qui fonctionne le mieux pour vous.
Jointure externe parent à enfant, et puis d'avoir count(*) = 0.
p.parent_id = c.parent_id*
.. dans oracle même genre de travail effectué par(+)
et devrait ajouter dans la table enfant (dans ce cas)Avec un autre exemple que
Énumérer table
Tous les parents qui ont des enfants (toutes les branches d'un arbre, même les racines, mais pas de feuilles!)
Tous les enfants qui n'ont pas d'enfants (toutes les feuilles d'un arbre)
Espère que cela aide
Simplement, je ne comprends pas quel est le
having
clause de faire dans votre requête, comme je le vois déjà vous direwhere
déjà cela signifie que vous avez ensemble d'enregistrements de childfield 2131ChildTable.ChildField_ = '2131'
Essayez la requête ci-dessous cela signifie que si le parent n'a pas d'enfant dans le Childtable avec le champ 2131then o/p de même.
Vous pouvez essayer
NOT IN