Query strana, join + via doppioni

mercoledì 13 aprile 2011 - 13.36

ngald Profilo | Newbie

chiederei una consulenza su una query
dovrei fare una query di select da 2 tabelle Importo e Persone.

select
i. importo, p.userid, p.nome, p.cognome
from Importo i, Persone p
where
.......
and i.userid=p.userid


Persone ha una chiave esterna Userid che la lega a Importo
Vorrei estrarre oltre al resto Nome e Cognome da Persone
Ci possono essere record Persone per stessa chiave Userid con NomeCognome diversi.

--------- persone -----------
YYI1234, Paolo, Rossi
YYI1234, Andrea,Verdi

Vorrei estrarre e legare a Importo solo il primo record (rownum=1) di Persone. Mi prendo solo il primo nome per importo.
Altrimenti verrebbere righe doppie tipo
100 , yyi1234, Paolo, Rossi
100 , yyi1234, Andrea,Verdi
123 , yyi9999, Aldo,Bianchi

Io vorrei invece
100 , yyi1234, Paolo, Rossi
123 , yyi9999, Aldo,Bianchi

La difficolta', almeno per me, sta nel fatto che la fk della join non mi permette di eliminare i doppioni nome, cognome di Persone.
Non posso nemmeno fare una select dentro alla select perche' la condizione di ricerca della subquery e' parte della join e non e'
un semplice parametro esterno.

in sostanza vorrei mantenere la join tra le tabelle ma poi tenere dalla tab Persone un solo record per ogni match.

avreste qualche suggerimento ??

grazie n

lbenaglia Profilo | Guru

>--------- persone -----------
>YYI1234, Paolo, Rossi
>YYI1234, Andrea,Verdi

Ciao,

La tabella persone ha valori duplicati per la colonna userid?
Qual è la Primary Key della tabella?

Potresti postare un esempio completo con le strutture delle tabelle comprensive di constraint (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che vorresti ottenere con quei dati?

>grazie n
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

ngald Profilo | Newbie

Ciao,

La tabella persone ha valori duplicati per la colonna userid?
>>> SI
userid1, Paolo, Rossi
userid1, Paolino, Rossini
userid2, Andrea, Rosselli


Qual è la Primary Key della tabella?
>>> CODICE_PERSONA, SEDE, SEDE_SECONDARIA
notare che CODICE_PERSONA non è USERID


Potresti postare un esempio completo con le strutture delle tabelle comprensive di constraint (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che vorresti ottenere con quei dati?

>> ora no, ma prendi l'esempio del mio primo messaggio. E' la semplificazione schematica.
>> devo fare una join, ma prendendo nel tab Persone solo il primo record.

>grazie n
grazie n

lbenaglia Profilo | Guru

> ora no, ma prendi l'esempio del mio primo messaggio. E' la semplificazione schematica.
> devo fare una join, ma prendendo nel tab Persone solo il primo record.

"primo" e "ultimo" non hanno alcun senso in un RBDMS, ed è proprio per questo motivo ti ho chiesto di postare un esempio completo.
Quando lo posterai vedrò di capire cosa ti serve.

>grazie n
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

gsflash80 Profilo | Junior Member

mi è sembrato strano che nell'userID non sia impostato Not Duplicate, perchè nelle due tabelle Import e person, almeno la colonna userID che si trova nelle queste due tabelle, così si fa FK Not duplicate.
Sarebbe meglio che postasse le strutture di due tabelle, così potremo capire meglio.
Grazie

..:: GSFLASH ::..
http://www.gsflash.it
http://blogs.dotnethell.it/gabrieleserpi/
MCTS - ACP - OCP - ECDL - ACSP
Ubuntu 11.04/OpenSuse 10.3
Vista Seven/MacOSX SnowLeopard
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5