Ciao a tutti.
ho un db con una tabella UTENTI, GRUPPI, GRUPPI_UTENTI, dove devo gestire degli utenti che possono appartenere a diversi gruppi. Un utente puo' essere iscritto a piu gruppi.
devo eseguire una query che deve resituire un elenco di tutti gli utenti della tabella UTENTI, con un campo espressione settato a 1 se l'utente appartiene al gruppo oppure a 0 se non appartienne al gruppo
Esempio
tabella Utenti: (ID, NOME)
1 , pippo
2 , franco
3 , marco
tabella Gruppi: (ID, gruppo)
1 , impiegati
2 , amministrativo
tabella Gruppi_Utenti: (ID_utenti, ID_gruppi)
1 , 1 (pippo appartiene al gruppo impiegati)
2 , 1 (franco appartiene al gruppo impiegati)
2 , 2 (franco appartiene al gruppo amministrativo)
con la seguente query
ottengo il seguente risultato:codice:SELECT UTENTI.ID, UTENTI.nome, "1" AS Espr1 FROM UTENTI LEFT JOIN UTENTI_GRUPPI ON UTENTI.ID = UTENTI_GRUPPI.ID_utente WHERE (((UTENTI_GRUPPI.ID_gruppo)=1)); union SELECT UTENTI.ID, UTENTI.nome, "0" AS Espr1 FROM UTENTI LEFT JOIN UTENTI_GRUPPI ON UTENTI.ID = UTENTI_GRUPPI.ID_utente WHERE (((UTENTI_GRUPPI.ID_gruppo)<>1 Or (UTENTI_GRUPPI.ID_gruppo) Is Null));
ID nome Espr1
1 pippo 1
2 franco 0
2 franco 1
3 marco 0
invece vorrei riuscire ad ottenere
ID nome Espr1
1 pippo 1
2 franco 1
3 marco 0
Grazie
Ciao
![]()
![]()

Rispondi quotando