Avatar billede poulchristian Juniormester
18. september 2012 - 16:30 Der er 6 kommentarer og
1 løsning

Subquery: bruge samme kolonne med to forskellige aliaser ...

Hejsa,

Jeg har brug for at udtrække to aliaser fra samme kolonne. Jeg kan sagtens få resultatet i to udtræk men jeg har brug for samme resultat i eet udtræk.

Jeg har to tabeller: forum_mail og forum_users.

Udtræk nr. 1:

SELECT
forum_mail.Conversation_ID,
forum_mail.Mail_Sender_User_ID,
forum_users.User_ID,
forum_users.Username AS Mail_Sender_Username
FROM forum_mail, forum_users
WHERE forum_mail.Mail_Sender_User_ID=forum_users.User_ID
AND forum_mail.Conversation_ID=6


Udtræk nr. 2:

SELECT
forum_mail.Conversation_ID,
forum_mail.Mail_Recipient_User_ID,
forum_users.User_ID,
forum_users.Username AS Mail_Recipient_Username
FROM forum_mail, forum_users
WHERE forum_mail.Mail_Recipient_User_ID=forum_users.User_ID
AND forum_mail.Conversation_ID=6


Jeg er desværre ikke hård nok i SQL til at udregne, hvordan jeg i eet udtræk kan producere et resultat, hvor Mail_Sender_ID producere aliaset Mail_Sender_Username og Mail_Recipient_ID kan producere aliaset Mail_Recipient_Username, begge bundet sammen med samme User_ID.

Håber, der er een derude, der kan hjælpe :-)

Hilsener fra
Poul Chr.
18. september 2012 - 16:55 #1
Det drejer sig i grunden om at du joiner forum_mail med forum_user to gange og giver forum_user tabellen forskellig alias hver gang.  Så som:

SELECT m.Conversation_ID, m.Mail_Sender_User_id, u1.Username AS Mail_Sender_Username, m.Mail_Recipient_User_ID, u2.Username AS Mail_Recipient_Username
FROM forum_mail m
JOIN forum_user u1 ON m.Mail_Sender_User_ID = u1.User_ID
JOIN forum_user u2 ON m.Mail_Recipient_User_ID = u2.user_ID
WHERE m.Conversation_ID = 6
18. september 2012 - 16:57 #2
Jeg fik skudt den af for hurtigt.  Jeg ville have påpeget, at jeg joinede tabellerne med JOIN i stedet for med WHERE og jeg bruger tabel aliaser m, u1, og u2 i stedet for de lange tabelnavne.  Det finder jeg gør det mere oversigteligt.
Avatar billede poulchristian Juniormester
19. september 2012 - 07:39 #3
Wow, du er godtnok hurtig ... og go'! dobbelt-join og to aliaser og alting! Det havde jeg ikke aldrig selv fundet ud af.

Tak for hjælpen!
Poul Chr.
19. september 2012 - 09:28 #4
I så fald, svar fra mig.
Avatar billede bauerdata Nybegynder
19. september 2012 - 11:52 #5
Du kunne også bruge dine oprindelige select's og lagt union imellem dem.
SELECT
forum_mail.Conversation_ID,
forum_mail.Mail_Sender_User_ID,
forum_users.User_ID,
forum_users.Username AS Mail_Sender_Username
FROM forum_mail, forum_users
WHERE forum_mail.Mail_Sender_User_ID=forum_users.User_ID
AND forum_mail.Conversation_ID=6
UNION
SELECT
forum_mail.Conversation_ID,
forum_mail.Mail_Recipient_User_ID,
forum_users.User_ID,
forum_users.Username AS Mail_Recipient_Username
FROM forum_mail, forum_users
WHERE forum_mail.Mail_Recipient_User_ID=forum_users.User_ID
AND forum_mail.Conversation_ID=6
19. september 2012 - 13:45 #6
bauerdata, ikke testet, men jeg tror din forespørgsel vil resultere i et resultat med fire kolonner, der vil tage deres overskrifter fra den første del af forespørgslen.  Resultatet vil have to rækker hvoraf den sidste række vil vise modtagerens id under overskriften 'Mail_Sender_User_ID' og modtagerens username under overskriften 'Mail_Sender_Username.
22. september 2012 - 07:09 #7
paulchristian, lukker du spørgsmålet igen?  Hvis du har ændret mening med hensyn til at mine indlæg var til hjælp, så accepter dit eget svar.  Men lad mig ikke blive hængende i et åbent spørgsmål.  Please.
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