0

製品ニュースの 2 つのテーブルがあります。ニュースは製品に関するものなので、ニュース テーブルには行 pid (製品 ID) があり、ニュースには日付が異なるため、日付順に並べることができます。そして、1つと最新のニュースタイトルとそれに添付された日付で結合された製品テーブルからのデータを表示するクエリが必要です-私は次のようなクエリを使用しようとしています:

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 演算子を使用する必要がありますか?

4

2 に答える 2

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
于 2012-04-07T12:19:04.997 に答える
1

ついに見つけました - 正しいことは、2 番目のテーブルから MAX 行の値を取得し、それを 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
于 2012-04-07T13:08:22.880 に答える