Problema select

giovedì 18 dicembre 2008 - 16.22

bolla111 Profilo | Senior Member

ciao a tutti...ho un dubbio...
io devo fare una select che mi richiami x 2 volte da una stessa tabella lo stesso campo...solo che il valore richiamato non è detto che debba essere uguale...faccio un esempio...
mettiamo che ho una tabella chiamata utenti composta da id e nome e una seconda tabella chiamata acquisti composta da idacquisto, idutente e idutentepagato
idutente rappresenta l'utente che ha acquistato un prodotto
idutentepagato rappresenta l'utente che invece ha pagato il prodotto acquistato
quindi questi 2 non devono necessariamente essere la stessa persona (chiaro che è solo un esempio il mio)
entrambe sono relazionati con l'd della tabella utenti;
ora io voglio fare una select in modo da avere l'id dell'acuisto, l'id e il nome dell'utente che acquista e l'id e il nome dell'utente che paga:
SELECT acquisti.idacquisto, acquisti.idutente, utenti.nome, acquisti.idutentepagato, utenti.nome FROM acquisti INNER JOIN utenti ON acquisti.idutente=utenti.id
e l'utente che acquista è diverso dall'utente che paga.
facendo una query così però il nome dell'utente richiamato che acquista risulterebbe essere lo stesso di quello richiamato che paga giusto? in pratica utenti.nome risulterebbe uguale in tutti e 2 i campi? se si come dovrei modificare la query?
spero di essere stato chiaro
grazie ciao

Jeremy Profilo | Guru

Sinceramente...penso che sia una bella gatta da pelare, però.....se posso darti un consiglio, fai costruire ad Access la tua SqlString creando lo scenario graficamente con il designer delle query e poi gli rubi la stringa creata da lui automaticamente.
Potrebbe(dico potrebbe) essere una soluzione.No????

bolla111 Profilo | Senior Member

uso sql server...cmq provo a seguire il tuo consiglio...

jenga Profilo | Newbie

>ciao a tutti...ho un dubbio...
>io devo fare una select che mi richiami x 2 volte da una stessa
>tabella lo stesso campo...
>SELECT acquisti.idacquisto, acquisti.idutente, utenti.nome, acquisti.idutentepagato,
>utenti.nome FROM acquisti INNER JOIN utenti ON acquisti.idutente=utenti.id

o non ho capito la domanda, o basta usare gli alias di tabella:

SELECT acquisti.idacquisto,
acquisti.idutente,
ute_acq.nome,
acquisti.idutentepagato,
ute_pag.nome
FROM acquisti
INNER JOIN utenti as ute_acq ON acquisti.idutente=ute_acq.id
INNER JOIN utenti as ute_pag ON acquisti.idutentepagato=ute_pag.id

in questo modo le due tabelle ute_acq e ute_pag è come se fossero due tabelle distinte.

ciao!
--
oggi la mia voglia di lavorare è pari a null

alx_81 Profilo | Guru

Sì, adesso che Jenga ha risposto mi ha fatto capire la domanda.
Lo quoto e credo proprio che fare la join due volte con due alias diversi sulla stessa tabella sia la soluzione corretta.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5