Avatar billede barn Nybegynder
16. februar 2003 - 03:15 Der er 4 kommentarer og
1 løsning

to gange "select as" i samme forespørgsel?

Jeg er i gang med at lave et email arkiv og har hældt mine gamle mails ind i disse tre tabeller.
De mails vil jeg så gerne hive ud igen, så man kan se hvem mailen er fra, og hvem den er til, dato, og emne, men jeg kan ikke lige få på plads hvordan jeg kombinerer nedenstående to pseudo sql statements til eet statement såldes at jeg i een og samme forespørgsel får både en "til" og en "fra" kolonne

select subject, body, name as to from Persons, Tofrom, Mails where date = "20030214" and Mails.id = mail_id and status = "to" and pers_id = Persons.id

select subject, body, name as from from Persons, Tofrom, Mails where date = "20030214" and Mails.id = mail_id and status = "from" and pers_id = Persons.id



Persons:
id    name     email
1    yy    xx@xx
3     reg    ge@sdf


Tofrom:
mail_id        pers_id        status
54        3        to
54        1        from
76        3        from
76        1        to

Mails:
id    date        subject        body
54    20030214    mailarchive    blah blah
Avatar billede arne_v Ekspert
16. februar 2003 - 11:14 #1
SELECT Mails.date,Mails.subject,PersonsFrom.email,PersonsTo.email
FROM Mails,ToFrom AS ToFromTo,ToFrom AS ToFromFrom,Persons AS PersonsTo,Persons as PersonsFrom
WHERE Mails.id=ToFromTo.mail_id AND Mails.id=ToFromFrom.mail_id
AND ToFromTo.status='to' AND ToFromFrom.status='from'
AND ToFromTo.pers_id=PersonsTo.id AND ToFromFrom.pers_id=PersonsFrom.id;
Avatar billede barn Nybegynder
17. februar 2003 - 15:36 #2
Jeg må blankt erkende to ting:
1) Det virker sørme
2) Jeg fatter ikke en brik af det... Når jeg forsøger at læse det kløjs jeg fuldstændigt i det, lidt ala "bispens gips-gebis"
3) Der kommer ikke to kolonner hvor den ene hedder ToFromTo og den anden hedder ToFromFrom, de kommer til at hedde email og email_1 (Det er en MySql base) men det er også ligegyldigt, det virker fint alligevel.

Mange tak!
Avatar billede arne_v Ekspert
17. februar 2003 - 16:16 #3
Det sidste kan du fixe ved:

SELECT Mails.date,Mails.subject,PersonsFrom.email as emailFrom,PersonsTo.email as emailTo
FROM Mails,ToFrom AS ToFromTo,ToFrom AS ToFromFrom,Persons AS PersonsTo,Persons as PersonsFrom
WHERE Mails.id=ToFromTo.mail_id AND Mails.id=ToFromFrom.mail_id
AND ToFromTo.status='to' AND ToFromFrom.status='from'
AND ToFromTo.pers_id=PersonsTo.id AND ToFromFrom.pers_id=PersonsFrom.id;
Avatar billede barn Nybegynder
17. februar 2003 - 16:51 #4
Det kan jeg da godt se nu...(Bagefter) Det giver helt klart mening.
Det er mellem FROM og WHERE jeg kløjs idet :)
Avatar billede arne_v Ekspert
17. februar 2003 - 17:00 #5
Groft sagt bruger jeg 2 eksemplarer af Persons og 2 eksemplarer af ToFrom.

Og så laver jeg bar en almindelig join mellem de 5 tabeller.
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