sql >> Database >  >> RDS >> Mysql

Query twee db met behulp van group by en detailinformatie weergeven

DOE MEE:

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

Uitleg:

Ik doe een innerlijke query die de tabelvolgorde weergeeft op price ASC in plaats van de standaard, laten we zeggen id ASC . Wanneer u GROUP BY de rijen, het gebruikt standaard de kolommen van de eerste rij, in dit geval degene met de laagste prijs.

Uw oplossing werkte niet omdat het net zo goed de eerste id had kunnen kiezen en niet de rij met de laagste prijs. De enige juiste kolom was de MIN( r.price ), maar zoals je hebt opgemerkt had die functie geen invloed op de andere kolommen in het resultaat.




  1. mysql telt mee in PHP-variabele

  2. Query-optimalisatie voor MySQL-indexgebruik

  3. Oracle-rijtelling van tabel per telling(*) versus NUM_ROWS van DBA_TABLES

  4. Alfabetisch bestellen in SQL