2012-12-10 64 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

我在'news'表中看不到'categoryID'? – Kermit

+0

你沒有'categoryID'列在你的psudo-DDL中列出'news'表 – amphibient

+0

謝謝,忘記了。 – Chris

回答

1

假設你在newscategoryID列,該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

相關問題