2012-04-07 102 views
0

我有兩個表:產品新聞 - 新聞是關於產品,所以新聞表有行pid(產品id),新聞有不同的日期,所以它可以按日期排序。 ,我需要一個查詢,以顯示從產品表中加入了與ONE和最新的新聞標題和日期連接到它的一些數據 - 我想使用這樣的查詢:MySQL左加入一個訂購的結果從另一個表

SELECT products.product_title, products.`product_key`, 
news.`news_date`, news.`news_text` FROM products LEFT JOIN 
news ON products.`product_key`= (SELECT news.`pid` FROM news 
WHERE news.`pid` = products.`product_key` 
ORDER BY news.`news_date` DESC LIMIT 1) 
ORDER BY products.`product_title` 

,但它不能正常工作,可能是我應該使用GROUP BY運算符而不是子查詢?

回答

1

,最後找着了 - 正確的事情是從第二個表中獲取最大行值和比它添加到WHERE條件:

SELECT products.product_title, products.product_key, news.news_date, 
news.news_text FROM products LEFT JOIN news ON products.product_key= news.pid 
WHERE news.news_date = (SELECT MAX(news.news_date) FROM news WHERE news.pid = products.product_key) ORDER BY products.product_key 
1

這是UNTESTED並願意編輯,如果它給出無效的結果。

SELECT a.product_key, a.product_title, 
     b.news_text, MAX(b.news_date) 
FROM products a LEFT JOIN news b 
     on a.product_key = b.pid 
GROUP BY a.product_key, a.product_title, b.news_text 
+0

能把我與possibe的最大日期的附加列對於此產品,但不是針對此確切新聞項目的所有其他數據 – shershen 2012-04-07 12:59:28