sql >> Databasteknik >  >> RDS >> Mysql

MIN/MAX-pris för varje produkt (fråga)

Först, när du använder join , bör du alltid ha en on klausul, även om MySQL inte kräver detta. Om du vill ha en cross join , var då tydlig om det.

För det andra använder du inte tm_markets tabell överhuvudtaget i frågan. Det behövs inte, så ta bort det.

Den resulterande frågan bör fungera:

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 

Eftersom du bara väljer en produkt, en group by är förmodligen inte nödvändigt. Du kan dock överväga detta:

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`

Det kommer att returnera informationen för alla produkter.



  1. MAKEDATE() Exempel – MySQL

  2. PostgreSQL Connection Pooling:Del 1 – För- och nackdelar

  3. Hur exporterar man en MySQL-databas till JSON?

  4. Prestandaimplikationer av MySQL-händelseschemaläggning