2012-04-07 48 views
0

から1つの注文した結果と参加左:製品ニュースを - ニュースは製品についてあるニュースの表は、(製品ID用)行のPIDを持っているので、ニュースがそれように、異なる日付を持っています日付で注文することができます。 と私はONEおよびそれに接続されている最新のニュースのタイトルと日付で入社製品テーブルからいくつかのデータを表示するために、クエリを必要とする - 私はこのようなクエリを使用しようとしています:、MySQLは私は2つのテーブル持っている別のテーブル

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条件に追加するよりも、MAXの行の値を取得することです:

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

関連する問題