2012-09-11 3 views
0

J'ai besoin d'une requête SQL pour trouver des enregistrements parents sans avoir d'enregistrements enfants.Les deux enregistrements enfant et parent sont sur la même tableRequête SQL pour trouver les enregistrements parent sans les enregistrements enfants.Les deux enregistrements enfant et parent sont sur la même table

+0

profondeurs à plusieurs niveaux (le parent de 1 peut avoir un autre parent qui peut avoir un autre parent ...) ou un seul niveau? – Najzero

+0

profondeur à plusieurs niveaux – user1270940

+0

Qu'est-ce que votre SGBD? –

Répondre

1

A SELF JOIN sur la table comme suit donnerait aux parents sans enfants.

-- relations (record_id, parent_id) 
SELECT parents.record_id 
FROM 
    relations parents 
    LEFT JOIN relations children 
    ON parents.record_id = children.parent_id 
WHERE 
    children.record_id IS NULL 
0

supposant: "mytable" est votre table, id_parent est une référence au PK du parent, haut parents niveau ont un parent_id null:

SELECT * FROM mytable 
WHERE id IN (SELECT parent_id FROM mytable WHERE parent_id IS NOT NULL) 
0

Vous pouvez essayer celui-ci:

SELECT * FROM Nodes N 
WHERE NOT EXISTS (SELECT ID FROM Nodes WHERE Nodes.ParentID = N.ID) 
Questions connexes