Avatar billede jennemaan Nybegynder
18. november 2003 - 11:10 Der er 2 kommentarer og
1 løsning

For hver record i een tabel, vise om der er tilhørende records

Hej eksperter.

Jeg har følgende spørgsmål.

Jeg har 3 tabeller;
main
sub1
og
sub2

Nu vil jeg gerne lave et view hvor alle records fra main bliver vist, samt en true/false kolonne for sub1 og sub2 der angiver om der er tilhørende records..

main:
ID|foo|bar

sub1
ID|mainID|foo|bar

og
sub2
ID|mainID|foo|bar

Resultatet skal se således ud;

MainID|HasSub1|HasSub2
1    |False  |False    //havde ingen relaterede i hverken sub 1 eller sub 2
2    |True  |False    //havde relateret i sub 1 men ikke sub 2...

Osv...

Jeg har prøvet noget med

Select
  ID,
  IF EXISTS(Select ... ) //osv
From
  main
Men jeg kunne ikke lige få det til at virke...

Foreslag?

Da jeg ikke har mulighed for at scripte stored procs mv. skal dette kunne æaves i et enkelt selectstatement.

/Jennemaan
Avatar billede trer Nybegynder
18. november 2003 - 11:16 #1
Du kan bruge en outer join

select id, case when sub1.mainid is null then 1 else 0 end,
case when sub2.mainid is null then 1 else 0 end
from main left oouter join sub1 on main.id = sub1.mainid left outer join sub2 on main.id = sub2.mainid
Avatar billede jennemaan Nybegynder
18. november 2003 - 11:17 #2
Never mind. Fandt en løsning :)
Avatar billede jennemaan Nybegynder
18. november 2003 - 11:27 #3
Select
    I.InterfaceRef,
    (CASE (Select Count(*) From CashflowDefinitions Inner Join CashflowArguments on CashflowDefinitions.CashflowDefinitionID=CashflowArguments.CashflowDefinitionID Where InstrumentID=I.InstrumentID)
    WHEN 0 THEN 'F'
    ELSE 'V' END +
    CASE (Select Count(*) From CashflowConditions Where InstrumentID=I.InstrumentID)
    WHEN 0 THEN ''
    ELSE 'O' END) As IType

From

    BPDebtelligence.dbo.Instruments As I
Inner Join
    BPDebtelligence.dbo.InstrumentTypes As IT
on
    I.InstrumentType=IT.InstrumentTypeID
Where
    IT.InstrumentArea='Credit'

Her var så løsningen...

Jeg ved godt at det er tungt querymæssigt på denne måde (din løsning med Outer Join havde nok været mildere :) )...

Men som du kan se bliver der i forvejen joinet på kryds og tværs...

/Jennemaan
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