Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.12;
Скачать: CL | DM;

Вниз

Sql запрос для таблица которая связана сама с собой   Найти похожие ветки 

 
Mishenka   (2009-05-18 16:31) [0]

Есть таблица с полями ID, ModuleName, ParentID. Таблица описывает древовидную структуру, где в поле ParentID содержится ID родительской записи из той же таблицы. Нужно написать запрос, который бы по заданному параметру ID выводил поле ModuleName и тоже поле ModuleName для родительской записи.

Пишу так:
SELECT M.ModuleName, M2.ModuleName as ParentModuleName
FROM Modules M, Modules M2
WHERE (M.ParentID = M2.ID) AND (M.ID = :IDModule)

где IDModule это заданный параметр. Для дочерних записей всё работает нормально. Однако для родительских, тобишь у которых ParentID не ссылается ни на какую запись, в результате выводится пустой набор, а нужно чтоб выводилась одна запись с пустым значением поля ParentModuleName. Как изменить запрос, чтоб всё работало нормально???


 
palva ©   (2009-05-18 16:39) [1]

Наверно, так:
SELECT M.ModuleName, M2.ModuleName as ParentModuleName
FROM Modules M
LEFT JOIN Modules M2 ON M.ParentID = M2.ID
WHERE M.ID = :IDModule


 
Ega23 ©   (2009-05-18 16:41) [2]

Select C.CatName, IsNull(C1.CatName, "") as ParCatName
from Mat$categories C left join Mat$categories C1 on (C.ParCatId=C1.CatID)


 
Mishenka   (2009-05-19 14:49) [3]

Всё заработало, спасибо!


 
Игорь Шевченко ©   (2009-05-19 14:53) [4]


> а нужно чтоб выводилась одна запись с пустым значением поля
> ParentModuleName. Как изменить запрос, чтоб всё работало
> нормально???


использовать OUTER JOIN ?



Страницы: 1 вся ветка

Текущий архив: 2009.07.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
2-1242913143
Paulivl
2009-05-21 17:39
2009.07.12
Товарищи, помогите с курсовым по Delphi (комп. для созд. таблиц)


2-1242886466
webpauk
2009-05-21 10:14
2009.07.12
Проверить строку


8-1195059532
Боб
2007-11-14 19:58
2009.07.12
SoundRecorder A.Galilov


15-1242300710
Jeer
2009-05-14 15:31
2009.07.12
Помощь


2-1242837940
Dr.Andrew
2009-05-20 20:45
2009.07.12
Как строку short *s=(short*)buffer можно перевести на делфи?