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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC