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

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