25 messaggi dal 30 novembre 2005
Ciao a tutti,

chiedo a voi una query per estrarre i dati dal mio db, vi spiego la mia situazione

Ho tre tabelle:

T_GRUPPI con ID, NOME, DT_CREAZIONE
T_UTENTI con ID, NICK, NOME, COGNOME, DT_NASCITA, EMAIL
T_UG con ID, ID_GRUPPO, ID_UTENTE

per ogni gruppo ci possono essere da 0 a n utenti, queste associazioni vengono inserite nella tabella T_UG.

Esempio.
Il gruppo con id 10 ha gli utenti con id 2, 3 e 4. quindi nella tabella T_UG ci saranno 3 record:
10 2
10 3
10 4
Naturalmente i gruppi senza utenti non sono presenti sulla tabella T_UG.

Ora mi serve una query che prenda i dati da gruppi e, ove esiste, gli utenti da T_UTENTI vedendo le associazioni su T_UG.

Grazie in anticipo a chi mi spara la query ;)

Luigi
194 messaggi dal 13 dicembre 2005
Per la selezione potresti fare così:
<code>
SELECT
T_GRUPPI.ID, T_GRUPPI.NOME, T_GRUPPI.DT_CREAZIONE,
T_UTENTI.ID, T_UTENTI.NICK, T_UTENTI.NOME, T_UTENTI.COGNOME, T_UTENTI.DT_NASCITA, T_UTENTI.EMAIL
FROM T_GRUPPI LEFT JOIN T_UG ON T_GRUPPI.ID=T_UG.ID_GRUPPO
LEFT JOIN T_UTENTI ON T_UG.ID_UTENTE=T_UTENTI.ID

</code>

Se non ci sono legami tra gruppi e utenti i valori delle colonne della tabella utenti ritorneranno con valore null, altrimenti ritorneranno tante righe quanti utenti sono relazionati con gruppi.
25 messaggi dal 30 novembre 2005
laurar81 ha scritto:
Per la selezione potresti fare così:
<code>
SELECT
T_GRUPPI.ID, T_GRUPPI.NOME, T_GRUPPI.DT_CREAZIONE,
T_UTENTI.ID, T_UTENTI.NICK, T_UTENTI.NOME, T_UTENTI.COGNOME, T_UTENTI.DT_NASCITA, T_UTENTI.EMAIL
FROM T_GRUPPI LEFT JOIN T_UG ON T_GRUPPI.ID=T_UG.ID_GRUPPO
LEFT JOIN T_UTENTI ON T_UG.ID_UTENTE=T_UTENTI.ID

</code>

Se non ci sono legami tra gruppi e utenti i valori delle colonne della tabella utenti ritorneranno con valore null, altrimenti ritorneranno tante righe quanti utenti sono relazionati con gruppi.


Ciao e grazie per la risposta.. purtroppo quando tento di eseguire questa query (da Access 2007) mi dice questo messaggio di errore:

Errore di sintassi (operatore mancante) nell'espressione della query 'T_GRUPPI.ID=T_UG.ID_GRUPPO
LEFT JOIN T_UTENTI ON T_UG.ID_UTENTE=T_UTENTI.I'.
194 messaggi dal 13 dicembre 2005
Scusa credevo che utilizzassi SQL Server:

SELECT T_GRUPPI.ID, T_GRUPPI.NOME, T_GRUPPI.DT_CREAZIONE, T_UG.ID_UTENTE, T_UTENTI.NICK, T_UTENTI.NOME, T_UTENTI.COGNOME, T_UTENTI.DT_NASCITA, T_UTENTI.EMAIL
FROM (T_GRUPPI LEFT JOIN T_UG ON T_GRUPPI.ID = T_UG.GRUPPO) LEFT JOIN T_UTENTI ON T_UG.ID_UTENTE = T_UTENTI.ID



L'ho provata con Access 2003 e non da errore
25 messaggi dal 30 novembre 2005
Alla grande.. era proprio quello che cercavo ;)

Grazie mille!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.