2012-04-07 103 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