Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    tip, non ripete i nomi delle tabelle nelle select, fa' così
    codice:
    SELECT P.Nome, P.Cognome FROM Persone P
    più leggibile, no?

  2. #12
    Quote Originariamente inviata da optime Visualizza il messaggio
    tip, non ripete i nomi delle tabelle nelle select, fa' così
    codice:
    SELECT P.Nome, P.Cognome FROM Persone P
    più leggibile, no?
    O sbaglio io o manca molto :


    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
    Primo ho una sola riga mentre le 3 che mi aspetto questa la union :

    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

  3. #13
    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'

  4. #14
    Quote Originariamente inviata da optime Visualizza il messaggio
    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

  5. #15
    bravo pippuccio76

    gli ho solo dato una ripulita

    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
    facce sape'

  6. #16
    Utente bannato
    Registrato dal
    Apr 2024
    Messaggi
    3
    .

  7. #17
    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ì...

  8. #18
    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

  9. #19
    @pippuccio76, nuovo quesito, nuovo thread, pls

    denghiù

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.