2013-12-11 1 views
0

Если у меня есть простая таблица, помеченный некоторыми GUID как так (просто предположим, что есть только эти две колонки):Как найти стерильный узел в таблице отношений родителя/ребенка?

GUID | parentGUID

Как найти стерильный узел (или ряд), чтобы у детей не было parentGUID в качестве GUID. Предположим, что «нет детей» просто отмечены как пустые.

Это была моя оригинальная попытка:

SELECT * 
FROM dagr d1, dagr d2 
WHERE d1.parentGUID = '' 
AND d2.parentGUID != '' 
AND d1.guid != d2.parentGUID 
AND d1.guid != d2.guid 

Мой мыслительный процесс: Сравните список детей-сирот (то есть строки, не родителя) с тем, что не-сирот (то есть строки, которые имеют родителя). Но, честно говоря, это, вероятно, не имеет смысла.

ответ

0

Немного сложно сказать, если это то, о чем вы просите, но если вы хотите найти строку в dagr без соответствующих строк, вы можете попробовать LEFT JOIN. Это, вероятно, немного поздно для ваших целей, но гуглеры могут найти какое-то использование этого.

SELECT d1.* 
FROM dagr d1 
LEFT JOIN dagr d2 
ON d1.guid = d2.parentGUIDIS 
WHERE d2.parentGUIDIS NULL 

См LEFT JOIN http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

Смежные вопросы