Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [SQL] UNIONE oppure JOIN?

    Ciao a tutti sql smanettoni!
    Mi rivolgo al forum perchè sono a un punto morto (e quindi disperato) nella realizzazione di una query che produca il risultato per il mio report generale che combini tutte le informazioni di
    Lavoro, Luogo e Mansione, mi spiego....

    Diciamo che ho 3 tabelle:
    LUOGO(IdLuogo, NomeLuogo) e ce ne sono 20 e di tipo "c" sono 5
    MANSIONE(IdMansione, Descrizione) e ce ne sono 5
    LAVORO(idPersona,idLuogo,idMansione,idIncarico)

    La prima query seleziona i record in LAVORO a seconda di un determinato codice finale del luogo, di un tipo di mansione e di un cerco Incarico, conteggia le persone che ci lavorano

    query A
    SELECT idLuogo AS SEDE, idMansione AS TIPO,Count(idPersona) AS Conteggio
    FROM LAVORO
    WHERE idLuogo LIKE '%c' AND IdMansione <>"DR" AND (idIncarico ="1" OR idIncarico="2"
    GROUP BY idLuogo, idMansione

    quindi avrò per esempio
    PRc | FAB | 9
    LZc | PIC | 2
    LZc | RUL | 5

    ecc...
    Poi mi creo tutte le possibili combinazioni di Luogo e Mansione da combinare con la prima query

    query B
    SELECT idLuogo AS SEDE, IdMansione AS TIPO, Conteggio = 0 FROM LUOGO, MANSIONE
    WHERE idLuogo LIKE '%c' AND idMansione <> "DR"

    Come risultato avrò quindi 5x4 (escludo un tipo Mansione) tuple del tipo
    PRc | FAB | 0
    PRc | PIC | 0
    PRc | RUL | 0
    LZc | FAB | 0
    LZc | PIC | 0
    LZc | RUL | 0 ecc....

    Ora la mia domanda è: per creare un insieme di tipo SEDE,TIPO,Conteggio che includa tutti gli elementi della query A più quelli della query B dove l'insieme di SEDE,TIPO non ci sia in A
    Cioè avere:
    PRc | FAB | 9
    PRc | PIC | 0
    PRc | RUL | 0
    LZc | FAB | 0
    LZc | PIC | 2
    LZc | RUL | 5

    Se provo la semplice UNION ho giustamente doppioni di SEDE,TIPO con diverso Conteggio.
    Poi ho pensato fare: A UNION (B Left Join A ON A.SEDE =B.SEDE AND A.TIPO = B.TIPO)
    ma siccome il JOIN lavoro sulle colonne quello che visualizzo non è il risultato aspettato, se non ricordo ottengo solo di nuovo A.

    Cosa mi suggerite?
    Mi aiutate con il SQL per ottenere la query finale?

    GRAZIEEEEE!

  2. #2
    niente ragazzi? A nessuno va di darmi una mano?

    Insomma, quale operatore, istruzione, query, ecc. potrei usare per unire due insiemi considerando soprattutto i valori nelle tuple e no nelle colonne di ogni singola query.

    Ho provato con EXCEPT in MS SQL Server, ma mi da errore di sintassi.


    Grazie

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.