2012-04-07 9 views
0

ich zwei Tabellen haben: Produkte und Nachrichten - Nachrichten sind über die Produkte so Nachrichten Tabellenzeile pid hat (für Produkt-ID), Nachrichten haben unterschiedliche Termine, so dass es Kann nach Datum sortiert werden. Und ich eine Abfrage benötigen einige Daten von Produkten zu zeigen Tabelle mit ONE und neuesten Nachrichten Titel und das Datum mit ihm verbunden verbunden - ich versuche Abfrage wie folgt zu verwenden:MySQL linke Seite mit einem geordneten resultieren aus einer anderen Tabelle

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` 

aber es funktioniert nicht richtig, Vielleicht sollte ich GROUP BY Operator statt Unterabfrage verwenden?

Antwort

1

es endlich gefunden - das Richtige ist MAX Zeilenwert aus dem zweiten Tabelle zu erhalten und als es in der WHERE-Bedingung: possibe

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

Dies ist UNTESTED und bereit zu bearbeiten, wenn es ungültige Ergebnisse gibt.

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

es wird mir eine zusätzliche Spalte mit maximalem Datum für dieses Produkt, aber nicht alle anderen Daten für diese genaue Nachricht – shershen

Verwandte Themen