Jens Thomsen wrote:
>> Nej, men du kan joine begge tabeller på med et outer join, og
>> derefter frasortere den ikke brugte information.
>>
>> select *
>> from emails e
>> outer join email_out_attr out on e.id = out.id
>> outer join email_in_attr in on e.id = in.id
>
>
> Hmm, de to tabeller har enkelte sammenfaldende kolonnenavne, og så
> skal jeg i koden vide, hvilken de skal plukkes fra alligevel.
Ja. Du slipper ikke for at skelne i koden, på en eller anden måde.,
En anden idé er at bruge en union:
select <attribut-liste>
from emails e
join email_out_attr out on e.id = out.id
union
select <attribut-liste>
from emails e
join email_in_attr in on e.id = in.id
Det forudsætter bare at du sikrer at <attribut-liste> er ens for de to
selects, hvilket formodentlig vil gøre det nødvendigt at indføre
pseudo-kollonner i select, fx sådan her:
select e.id, out.adresse, NULL as navn
from emails e
join email_out_attr out on e.id = out.id
union
select e.id, NULL as adresse, in.navn
from emails e
join email_in_attr in on e.id = in.id
> Havde ellers været smart
>
> Man kan heller ikke med views?
Et view er i princippet ikke andet end en præfabriket select. Hvor du kan
skrive et view, kan du også skrive "(select ....) as view_select". Det
løser ikke noget.
> Er en outer join det samme som en left join?
Min fejl. Der skulle have stået "left join" eller "left outer join". "outer
join" giver ikke mening i sig selv.
--
Venlig hilsen /Best regards
Kristian Damm Jensen