Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fragen Sie zwei Datenbanken mit Gruppieren nach ab und zeigen Sie Detailinformationen an

SCHLIESSEN SIE SICH ihnen AN:

SELECT r.product_id, i.brand, i.name, i.category, DATE_FORMAT( r.inputTime, '%e-%b' ) AS inputTime, r.shopType, r.price AS minimum_price, r.record_id
FROM (  SELECT *
        FROM itemRecord
        WHERE product_id = '1'
        ORDER BY price ASC, inputTime DESC) AS r
INNER JOIN itemInfo As i
ON r.product_id = i.product_id
WHERE i.id = r.product_id
GROUP BY DATE(r.inputTime)
LIMIT 0, 7

Erklärung:

Ich mache eine innere Abfrage, die die Tabellenreihenfolge nach price ASC rendert sagen wir statt der Vorgabe id ASC . Wenn Sie GROUP BY Zeilen, werden standardmäßig die Spalten der ersten Zeile verwendet, die in diesem Fall die mit dem niedrigsten Preis ist.

Ihre Lösung hat nicht funktioniert, da sie möglicherweise auch die erste ID und nicht die Zeile mit dem niedrigsten Preis ausgewählt hat. Die einzige Spalte, die korrekt war, war MIN( r.price ), aber wie Sie bemerkt haben, hatte diese Funktion keinen Einfluss auf die anderen Spalten im Ergebnis.