Avatar billede lazy_warrior Nybegynder
10. februar 2005 - 10:47 Der er 9 kommentarer og
2 løsninger

hente to forskellige data fra same relaterede tabel

Jeg har to tabeller
Aftaler og Personer
I aftaler har jeg to referencer, en til Afsender og Modtager, der begge ligger i Person tabellen

Jeg ønsker at hente både modtager og afsenders navn fra begge disse referencer ud for en bestemt aftale.

Hvordan kan jeg være sikker på at der ikke byttes rundt på navnene?

Skal der laves flere forespørgsler i en Stored procedure ?

Hilsen
Kristoffer
Avatar billede jpvj Nybegynder
10. februar 2005 - 10:57 #1
Nedenstående er mit bud:

SELECT navn AS AfsenderNavn, navn as ModtagerNavn
FROM Person
WHERE AfsenderNavn=AfsenderRef AND ModtagerNavn=ModtagerRef
Avatar billede lazy_warrior Nybegynder
10. februar 2005 - 11:05 #2
ref mellem aftaler og person er en GUID

Det er navnene jeg er interesseret i, der kan findes gennem GUID, men hvordan holder jeg styr på om det er modtager eller afsedner der sammenlignes?
Avatar billede xelor Nybegynder
10. februar 2005 - 11:08 #3
Mit bud er lidt mere bescærligt :

SELECT Aftaler.*, Person.Navn as Modtager, Person1.Afsender FROM Person inner join Aftaler ON Aftaler.SenderID=Person.PersonID INNER JOIN Person as Person1 ON Aftaler.ModtagerID=Person1.PersonID
Avatar billede fennec Nybegynder
10. februar 2005 - 11:09 #4
Du skal have joinet Personer to gange:

select p1.navn as modtager, p2.navn as afsender from Aftaler, Personer p1, Personer p2 where Aftaler.modtager=p1.id and Aftaler.efsender=p2.id
Avatar billede xelor Nybegynder
10. februar 2005 - 11:09 #5
Denne query indeholder en Aftaletabel og to persontabeller...
Den ene person tabel lænkes til AfsenderID og den anden lænkes til ModtagerID..
Avatar billede xelor Nybegynder
10. februar 2005 - 11:10 #6
Ja, præcis min tanke, fennec.:-)
Avatar billede fennec Nybegynder
10. februar 2005 - 11:20 #7
... Du kom desværre bare først :o)
Avatar billede xelor Nybegynder
10. februar 2005 - 11:25 #8
:-)
Avatar billede xelor Nybegynder
10. februar 2005 - 11:28 #9
En lille rettelse til mit tidligere svar :

SELECT Aftaler.*, Person.Navn as AFSENDER, Person1.NAVN as MODTAGER FROM Person inner join Aftaler ON Aftaler.SenderID=Person.PersonID INNER JOIN Person as Person1 ON Aftaler.ModtagerID=Person1.PersonID
Avatar billede xelor Nybegynder
10. februar 2005 - 11:29 #10
Havde lige lidt rod i mine inner joins :-) (nej ikke mine inner JoinTs ..:-)
Avatar billede lazy_warrior Nybegynder
10. februar 2005 - 12:03 #11
Takker nu virker det. det bare alle tiders. Det havde jeg ikke lige regnet ud selv!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester