Estrarre soltanto i prodotti con stessa descrizione

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Salve a tutto il gruppo, sono di fronte ad un problema, ho la necessità di estrarre il prezzo minimo e massimo dei prodotti con la stessa alfa_marca e stessa alfa_varieta.
La query che ho postato mi estrae anche i prodotti che non hanno la stessa alfa_marca e stessa alfa_varieta, qualcuno mi può aiutare?

PHP:
SELECT id, ditta, tblrilprezzimensili_check.prodotto, serie, quantita, tblrilprezzimensili_check.id_marca, tblrilprezzimensili_check.alfa_marca, tblrilprezzimensili_check.id_varieta, tblrilprezzimensili_check.alfa_varieta, tblrilprezzimensili_check.prezzo, tblrilprezzimensili_check.prezzo_calcolato 
FROM tblrilprezzimensili_check,
(SELECT prodotto AS nome, alfa_marca AS marca1, alfa_varieta AS varieta1, min(prezzo) AS min_prezzo, MAX(prezzo) AS max_prezzo
FROM `tblrilprezzimensili_check` GROUP BY prodotto,alfa_marca,alfa_varieta) AS tbl1
WHERE prodotto=tbl1.nome and alfa_marca=tbl1.marca1 and alfa_varieta=tbl1.varieta1 AND (prezzo = tbl1.min_prezzo OR prezzo=tbl1.max_prezzo)
Grazie
Max61
 
SQL:
SELECT
    t1.prodotto
  , t1.alfa_marca
  , t1.alfa_varieta
  , t2.prezzo
  , t1.min_prezzo
  , t1.max_prezzo
FROM (
  SELECT
    prodotto
  , alfa_marca
  , alfa_varieta
  , MIN(prezzo) AS min_prezzo
  , MAX(prezzo) AS max_prezzo
  FROM tblrilprezzimensili_check
  GROUP BY
    prodotto
  , alfa_marca
  , alfa_varieta
) t1
  LEFT JOIN tblrilprezzimensili_check t2
  ON  t1.prodotto     = t2.prodotto
  AND t1.alfa_marca   = t2.alfa_marca
  AND t1.alfa_varieta = t2.alfa_varieta
where prezzo = min_prezzo OR prezzo = max_prezzo

puoi mettere la clausola distinct o unique ( mi sembra si chiami in mysql) per evitare di estrarre righe doppie, nel caso ci fossero

un esempio con 2 casi (100 e 200)
1674239788613.png
 
Grazie marino51, ho provato la tua query ma non fa quello che voglio, mostra tutti i record anche quelli con descrizione diversa.
PHP:
SELECT
    t1.prodotto
    , t1.ditta
    , t1.serie
    , t1.quantita
    , t1.id_marca
    , t1.alfa_marca
    , t1.id_varieta
    , t1.alfa_varieta
    , t1.prezzo_calcolato
  , t2.prezzo
  , t1.min_prezzo
  , t1.max_prezzo
FROM (
  SELECT
    prodotto
  , ditta
  , serie
  , quantita
  ,id_marca
  , alfa_marca
  ,id_varieta
  , alfa_varieta
  , prezzo_calcolato
  , MIN(prezzo) AS min_prezzo
  , MAX(prezzo) AS max_prezzo
  FROM tblrilprezzimensili_check
  GROUP BY
    prodotto
  , alfa_marca
  , alfa_varieta
) t1
  LEFT JOIN tblrilprezzimensili_check t2
  ON  t1.prodotto     = t2.prodotto
  AND t1.alfa_marca   = t2.alfa_marca
  AND t1.alfa_varieta = t2.alfa_varieta
where prezzo = min_prezzo OR prezzo = max_prezzo

Ciao
 

Discussioni simili