2012-12-10 2 views
1

У меня есть две следующие таблицы базы данных:2 присоединяется в одном запросе с ParentID

Новости Таблица:

newsID, topic, categoryID 

Категория Таблица:

categoryID, title, parentID 

Я хочу, чтобы получить NewSID, то тема, название основной категории и только IF parentID не равно 0, название родительской категории. настоящее время им застрял так:

SELECT news.newsID, news.topic, category.title 
FROM news 
LEFT JOIN category 
ON news.categoryID = category.categoryID 
WHERE news.newsID = 1 

Я до сих пор отсутствует родительский титул, если доступно. Каков наиболее эффективный способ его получения (если доступен)?

Благодаря

+2

Я не вижу 'categoryID' в таблице' news'? – Kermit

+0

у вас нет столбца categoryID, указанного в вашем psudo-DDL для таблицы 'news' – amphibient

+0

Спасибо, забыли. – Chris

ответ

1

Если предположить, что у вас есть categoryID столбца в news таблице И что category таблицы автореферентной иерархия, это означает, что parentID ребенка ссылается на столбец categoryID родительской строки в той же таблице:

SELECT   n.newsID, n.topic, c.title, p.title as parentTitle 
FROM  news n 
LEFT JOIN category c 
ON   n.categoryID = c.categoryID 
LEFT JOIN category p 
ON  c.parentID = p.categoryID 
WHERE  n.newsID = 1 
2

Предполагая, что есть categoryID колонок на news таблицы:

SELECT n.newsID, n.topic, c.title, cp.title as parenttitle 
FROM news n 
LEFT JOIN category c ON n.categoryID = c.categoryID 
LEFT JOIN category cp ON cp.categoryID = c.parentID 
WHERE n.newsID = 1 
+1

+1: я бы только псевдоним столбца 'cp.title' с другим именем для ясности – amphibient

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