Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313

    come eliminare duplicati da due query usando union

    Salve ho due query abbasstanza coplesse :
    Codice PHP:
    (SELECT cliente.Descrizione,articolo.codice,articolo.descrizione,listino_articolo.Prezzo,magazzino.Qt AS Qt_totale FROM database.db_user_anagrafica_point_cliente cliente 
    INNER JOIN database
    .db1_arca_listino_revisione listino_revisione ON cliente.Cd_LS_1 listino_revisione.Cd_Ls
    INNER JOIN database
    .db1_arca_listino_articolo listino_articolo ON listino_revisione.id listino_articolo.Id_LSRevisione
    INNER JOIN database
    .db1_arca_articoli articolo ON listino_articolo.Cd_AR=articolo.Codice 
    INNER JOIN database
    .db1_arca_articoli_magazzino magazzino ON magazzino.codice articolo.codice
    INNER JOIN database
    .db1_arca_ordini_meta meta ON articolo.codice meta.Codice

    WHERE
    (cliente.id '2952'  ))

    UNION 

    (SELECT cliente.Descrizione,articolo.codice,articolo.descrizione,listino_articolo.Prezzo,' ' FROM database.db_user_anagrafica_point_cliente cliente 
    INNER JOIN database
    .db1_arca_listino_revisione listino_revisione ON cliente.Cd_LS_1 listino_revisione.Cd_Ls
    INNER JOIN database
    .db1_arca_listino_articolo listino_articolo ON listino_revisione.id listino_articolo.Id_LSRevisione
    INNER JOIN database
    .db1_arca_articoli articolo ON listino_articolo.Cd_AR=articolo.Codice

    WHERE
    (cliente.id '2952') ) 
    praticamente devo estrarre la giacenza articolo però cosa mi sta capitando, quando lancio la query mi ritrovo due volte lo stesso codice , una volta senza la giagenza Totale "Qt_totale" e una volta senza, come posso fare per eliminare questa duplicità di recordo ???

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quale record vuoi tenere ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    praticamente esce cosi

    articolo.codice magazzino.Qt
    -------------- ------------
    xser123------- 12
    xser123-------
    zof21--------- 130
    zof21---------

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Dovresti filtrare dalla seconda query i record presenti nella prima.
    Forse potresti fare una sola query in quanto solo 'magazzino.Qt' cambia quando ne hai due. Ho tolto la join con la tabella meta in quanto non usi i suoi campi.

    codice:
    (SELECT cliente.Descrizione,articolo.codice,articolo.descrizione,listino_articolo.Prezzo,magazzino.Qt AS Qt_totale FROM database.db_user_anagrafica_point_cliente cliente 
    
    INNER JOIN database.db1_arca_listino_revisione listino_revisione ON cliente.Cd_LS_1 = listino_revisione.Cd_Ls
    
    INNER JOIN database.db1_arca_listino_articolo listino_articolo ON listino_revisione.id = listino_articolo.Id_LSRevisione
    
    INNER JOIN database.db1_arca_articoli articolo ON listino_articolo.Cd_AR=articolo.Codice 
    
    LEFT JOIN database.db1_arca_articoli_magazzino magazzino ON magazzino.codice = articolo.codice
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Vero, sto riscrivendo la query, praticamente devo sottrarre la merce che tengo in ordine a quella che ho disponibile a magazzino... Grazie moltissimo per la risposta :-D

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Va quasi bene, eccola :-D
    codice:
    SELECT cliente.Descrizione,articolo.Codice,listino_revisione.Cd_Ls,magazzino.Qt,magazzino.Qt_Disp, if(meta.qt =NULL,magazzino.Qt_Disp,magazzino.Qt_Disp - meta.qt) AS Qt_Riserv FROM db_user_anagrafica_point_cliente cliente 
    INNER JOIN db1_arca_listino_revisione listino_revisione ON cliente.Cd_LS_1 = listino_revisione.Cd_Ls 
    INNER JOIN db1_arca_listino_articolo listino_articolo ON listino_revisione.id = listino_articolo.Id_LSRevisione 
    INNER JOIN db1_arca_articoli articolo ON listino_articolo.Cd_AR=articolo.Codice 
    INNER JOIN db1_arca_articoli_magazzino magazzino ON magazzino.codice = articolo.codice 
    LEFT JOIN db1_arca_ordini_meta meta ON meta.Codice = articolo.Codice
    
    WHERE (cliente.id='2960')
    mi rimane solo una cosa, la condizione "if(meta.qt !=NULL,magazzino.Qt_Disp,magazzino.Qt_Disp - meta.qt) AS Qt_Riserv" dev'essere eseguita solo quando quest'altra condizione è vera, cioè quando db1_arca_ordini.stato="Ordine Inviato"



    db1_arca_ordini_meta

    id int(11) AI PK
    id_transit int(11)
    id_ordine int(11)
    Codice varchar(100)
    Prezzo varchar(30)
    Cd_Aliquota varchar(20)
    qt int(11)

    db1_arca_ordini

    id int(11) AI PK
    Cd_CF varchar(20)
    id_operatore varchar(20)
    data date
    ora time
    codice_destinazione varchar(20)
    cod_trasporto varchar(20)
    cod_pagamento varchar(20)
    sconto varchar(20)
    omaggio varchar(20)
    stato varchar(20)


    Quindi dovrei aggiungere un'ulteriore JOIN ma praticamente se non esiste mi deve restiture un campo vuoto....

    ... INNER JOIN db1_arca_ordini ordini ON meta.id_ordini = ordini.id WHERE(ordini.stato ='Ordine Inviato');

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 © 2025 vBulletin Solutions, Inc. All rights reserved.