sql >> Database >  >> RDS >> Mysql

MIN/MAX prijs voor elk product (vraag)

Ten eerste, wanneer u join . gebruikt , moet u altijd heb een on clausule, hoewel MySQL dit niet vereist. Als je een cross join . wilt , wees er dan expliciet over.

Ten tweede gebruikt u de tm_markets . niet tabel helemaal niet in de query. Het is niet nodig, dus verwijder het.

De resulterende zoekopdracht zou moeten werken:

SELECT MIN(`map`.`Product_Price`) as `minProductPrice`,
       MAX(`map`.`Product_Price`) as `maxProductPrice`,
       `pr`.`Product_Name` as `productName`
FROM `bm_market_products` `map` join
     `bm_products` as `pr`
     on map`.`Product_Id` = `pr`.`Product_Id`
WHERE `map`.`Product_Id` = 1 

Omdat je maar één product kiest, een group by is waarschijnlijk niet nodig. Je zou dit echter kunnen overwegen:

SELECT MIN(`map`.`Product_Price`) as `minProductPrice`,
       MAX(`map`.`Product_Price`) as `maxProductPrice`,
       `pr`.`Product_Name` as `productName`
FROM `bm_market_products` `map` join
     `bm_products` as `pr`
     on map`.`Product_Id` = `pr`.`Product_Id`
group by `map`.`Product_Id`

Dat retourneert de informatie voor alle producten.



  1. 4 manieren om de definitie van een weergave te krijgen met Transact-SQL

  2. SCHEMABINDING verwijderen uit een weergave in SQL Server

  3. Fix "ERROR 1222 (21000):de gebruikte SELECT-instructies hebben een ander aantal kolommen" bij gebruik van UNION in MariaDB

  4. PDO Meerdere zoekopdrachten:transactie vastleggen en terugdraaien