tip, non ripete i nomi delle tabelle nelle select, fa' così
più leggibile, no?codice:SELECT P.Nome, P.Cognome FROM Persone P
tip, non ripete i nomi delle tabelle nelle select, fa' così
più leggibile, no?codice:SELECT P.Nome, P.Cognome FROM Persone P
O sbaglio io o manca molto :
Primo ho una sola riga mentre le 3 che mi aspetto questa la union :codice:SELECT MAX(numero_prodotti_sparati) AS numero_prodotti_sparati, MAX(quantita) as quantita FROM( SELECT `ddt_righe_sparate`.`id_prodotti`, count(ddt_righe_sparate.id_prodotti) as numero_prodotti_sparati, 0 as quantita, prodotti.codice_articolo, prodotti.descrizione FROM `ddt_righe_sparate` JOIN prodotti on prodotti.id=ddt_righe_sparate.id_prodotti WHERE `ddt_righe_sparate`.`id_ddt` = 29 AND `ddt_righe_sparate`.`deleted_at` IS NULL GROUP BY `ddt_righe_sparate`.`id_prodotti`,prodotti.codice_articolo, prodotti.descrizione UNION SELECT `ddt_righe_inserite`.`id_prodotti`, 0 as numero_prodotti_sparati, `ddt_righe_inserite`.`quantita`, prodotti.codice_articolo, prodotti.descrizione FROM `ddt_righe_inserite` JOIN prodotti on prodotti.id=ddt_righe_inserite.id_prodotti WHERE `ddt_righe_inserite`.`id_ddt` = 29 AND `ddt_righe_inserite`.`deleted_at` IS NULL ) as result
id_prodotti numero_prodotti_sparati quantita
3742 1 0
11 1 0
3742 0 1
questo il risultato totale :
numero_prodotti_sparati quantita
1 1
Invece mi aspetto due righe
id_prodotti numero_prodotti_sparati quantita
3742 1 1
11 1 0
p.s. avevo provato a mettere gli screenshot ma non si vedono
Ultima modifica di pippuccio76; 08-04-2024 a 01:55
ci sei quasi. La query di esempio prevedeva una sola riga; nel tuo caso, avendone più d'una, dovrai aggiungere alla query "esterna":
- l'id e la descrizione del prodotto all'elenco delle colonne estratte
- una GROUP BY sempre per id e descrizione
prova e facce sape'
eccola, ho tolto le join dalle due interne e fatta fuori , funziona :
codice:SELECT MAX(numero_prodotti_sparati) AS numero_prodotti_sparati, MAX(quantita) as quantita,id_prodotti,prodotti.descrizione,prodotti.codice_articolo FROM( SELECT `ddt_righe_sparate`.`id_prodotti`, count(ddt_righe_sparate.id_prodotti) as numero_prodotti_sparati, 0 as quantita FROM `ddt_righe_sparate` WHERE `ddt_righe_sparate`.`id_ddt` = '.$id_ddt.' AND `ddt_righe_sparate`.`deleted_at` IS NULL GROUP BY `ddt_righe_sparate`.`id_prodotti` UNION SELECT `ddt_righe_inserite`.`id_prodotti`, 0 as numero_prodotti_sparati, `ddt_righe_inserite`.`quantita` FROM `ddt_righe_inserite` JOIN prodotti on prodotti.id=ddt_righe_inserite.id_prodotti WHERE `ddt_righe_inserite`.`id_ddt` = '.$id_ddt.' AND `ddt_righe_inserite`.`deleted_at` IS NULL ) as result join prodotti on result.id_prodotti=prodotti.id group by id_prodotti,descrizione,codice_articolo
bravo pippuccio76
gli ho solo dato una ripulita
facce sape'codice:SELECT MAX(R.numero_prodotti_sparati) AS numero_prodotti_sparati, MAX(R.quantita) as quantita, R.id_prodotti, P.descrizione, P.codice_articolo FROM( SELECT id_prodotti, count(id_prodotti) as numero_prodotti_sparati, 0 as quantita FROM ddt_righe_sparate WHERE id_ddt = '.$id_ddt.' AND deleted_at IS NULL GROUP BY id_prodotti UNION SELECT id_prodotti, 0 as numero_prodotti_sparati, quantita FROM ddt_righe_inserite WHERE id_ddt = '.$id_ddt.' AND deleted_at IS NULL ) AS result R JOIN prodotti P on R.id_prodotti=P.id GROUP BY R.id_prodotti, P.descrizione, P.codice_articolo
.