Se ti riferisci a quella che hai postato, contiene già una JOIN, per cui non è da considerare. Io intendo proprio query separate, una per tabella
Se ti riferisci a quella che hai postato, contiene già una JOIN, per cui non è da considerare. Io intendo proprio query separate, una per tabella
Eccole:
codice:SELECT `ddt_righe_sparate`.`id_prodotti`, count(ddt_righe_sparate.id_prodotti) as numero_prodotti_sparati, 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; SELECT `ddt_righe_inserite`.`id_prodotti`, `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
.
Devo effettuare una modifca a questa query , praticamente invece di raggruppare le righe per quantita devo avere una riga per prodotto ,
la mia query interna (modificata da quella sopra) è questa :
codice:SELECT doa_righe_sparate.id, `doa_righe_sparate`.`id_prodotti`, prodotti.codice_ean as codice_ean_sparato, 0 as codice_ean_inserito, 0 as inserito_manualmente, prodotti.costo as costo_prodotto FROM `doa_righe_sparate` JOIN prodotti on prodotti.id=doa_righe_sparate.id_prodotti WHERE `doa_righe_sparate`.`id_doa` = 1 AND `doa_righe_sparate`.`deleted_at` IS NULL UNION SELECT 0 as id, `doa_righe_inserite`.`id_prodotti`, 0 as codice_ean_sparato, prodotti.codice_ean as codice_ean_inserito, `doa_righe_inserite`.inserito_manualmente, prodotti.costo as costo_prodotto FROM `doa_righe_inserite` JOIN prodotti on prodotti.id=doa_righe_inserite.id_prodotti WHERE `doa_righe_inserite`.`id_doa` = 1 AND `doa_righe_inserite`.`deleted_at` IS NULL ) as result join prodotti on result.id_prodotti=prodotti.id group by id_prodotti,descrizione,codice_articolo
il risultato (estrapolato in parte è il seguente) :
https://imgur.com/ONNBOT3.png
Avrei la necessita che se c'è una riga con codice inserito uguale a quello sparato la riga con codice inserito venga tolta e venga scritto nella stessa riga di quello sparato ad esempio nell'esempio sopra la prima riga con id = 0 e con ean inserito al primo posto venga cancellata e l'ean inserito vada nella prima riga,
la seconda al secondo posto mentre le altre due non avendo corrispondenza rimangano esattamente così...
scusate la query attuale � questa :
codice:SELECT doa_righe_sparate.id, `doa_righe_sparate`.`id_prodotti`, prodotti.codice_ean as codice_ean_sparato, 0 as codice_ean_inserito, 0 as inserito_manualmente, prodotti.costo as costo_prodotto FROM `doa_righe_sparate` JOIN prodotti on prodotti.id=doa_righe_sparate.id_prodotti WHERE `doa_righe_sparate`.`id_doa` = 1 AND `doa_righe_sparate`.`deleted_at` IS NULL UNION ALL SELECT 0 as id, `doa_righe_inserite`.`id_prodotti`, 0 as codice_ean_sparato, prodotti.codice_ean as codice_ean_inserito, `doa_righe_inserite`.inserito_manualmente, prodotti.costo as costo_prodotto FROM `doa_righe_inserite` JOIN prodotti on prodotti.id=doa_righe_inserite.id_prodotti WHERE `doa_righe_inserite`.`id_doa` = 1 AND `doa_righe_inserite`.`deleted_at` IS NULL
Ultima modifica di pippuccio76; 02-07-2024 a 21:47