18. november 2003 - 11:10Der 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.
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
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
Synes godt om
Ny brugerNybegynder
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.