database: mssql 2k.
Ik heb o.a. 3 tabellen die als volgt werken:
tabel 1: ID1, bla, bla, bla
tabel 2: ID2, naam1, naam2, naam3, naam4
tabel 3: ID1, ID2 (koppel tabel)
Dit komt dus neer dat de items in tabel 2 gekoppeld kunnen zijn aan de items in tabel 1 middels een koppeltabel [3].
Ik wil mijn data als volgt terug krijgen:
kolomnaam: ID1, bla, bla, bla, naam1, naam2, naam3, naam4
een rij: 14, xxx, xxx, xxx, true, true, false, false
Waarbij het uiteraard gaat om de true/false's die komen uit de koppeltabel. Een true indien het item gekoppeld is, een false indien dat niet het geval is..
Het probleem zit hem in het samenvoegen van de gegevens en op dit moment zit ik er helemaal doorheen.
Waarom denk je?? Omdat TABEL 2 DYNAMISCH IS. Met andere woorden, ik ken de id's dus niet van tabel 2 en kan dus niet met subselects werken!!!! (ik bedoel met dynamisch: tabel 2 wordt bijgehouden in een cms systeempje en er worden dus items toegevoegd en soms verwijderd).
Wat heb ik gedaan om dit probleem op te lossen?
Ik heb een query/sproc die met een cursor door tabel 2 gaat, de kolommen noteert en gebruikt om te kijken of de koppeling wel of niet bestaat (SELECT count(*) from tabel3 where ID1 = @tabel1ID and ID2 = y.
Dit lukt me. Ik krijg terug een select 0 as naam1, 1 as naam2 etc. etc.
Wat me niet lukt is om iets dergelijks te schrijven:
select tabel1.*, (exec sprocje ) from tabel1 of iets in die trant (ja, ik schrijf de * uit.. duh)
Mijn volgende poging gaat zijn om dan maar 2 cursors te gebruiken.. eentje om door tabel1 heen te gaan, en dan een inner cursor voor de koppeltabel.
OF (gaat poging 3 zijn) om 1 kolom aan tabel 1 toe te voegen (met vaste kolomnaam dus) en daarin een string te zetten van de tabel2 ID's die gekoppeld zijn. In mijn .net code haal ik het wel weer uitelkaar... weet nog niet hoe ik zo'n string kan selecten.
Zit ik hiermee op de juiste weg of is er een VEEL simpelere wijze?? Ik zie even door de bomen het bos niet meer..
[a.u.b. alleen serieuze antwoorden. Dit probleem moet op de sql server worden opgelost, niet door .net code als het even kan]
Ik heb o.a. 3 tabellen die als volgt werken:
tabel 1: ID1, bla, bla, bla
tabel 2: ID2, naam1, naam2, naam3, naam4
tabel 3: ID1, ID2 (koppel tabel)
Dit komt dus neer dat de items in tabel 2 gekoppeld kunnen zijn aan de items in tabel 1 middels een koppeltabel [3].
Ik wil mijn data als volgt terug krijgen:
kolomnaam: ID1, bla, bla, bla, naam1, naam2, naam3, naam4
een rij: 14, xxx, xxx, xxx, true, true, false, false
Waarbij het uiteraard gaat om de true/false's die komen uit de koppeltabel. Een true indien het item gekoppeld is, een false indien dat niet het geval is..
Het probleem zit hem in het samenvoegen van de gegevens en op dit moment zit ik er helemaal doorheen.
Waarom denk je?? Omdat TABEL 2 DYNAMISCH IS. Met andere woorden, ik ken de id's dus niet van tabel 2 en kan dus niet met subselects werken!!!! (ik bedoel met dynamisch: tabel 2 wordt bijgehouden in een cms systeempje en er worden dus items toegevoegd en soms verwijderd).
Wat heb ik gedaan om dit probleem op te lossen?
Ik heb een query/sproc die met een cursor door tabel 2 gaat, de kolommen noteert en gebruikt om te kijken of de koppeling wel of niet bestaat (SELECT count(*) from tabel3 where ID1 = @tabel1ID and ID2 = y.
Dit lukt me. Ik krijg terug een select 0 as naam1, 1 as naam2 etc. etc.
Wat me niet lukt is om iets dergelijks te schrijven:
select tabel1.*, (exec sprocje ) from tabel1 of iets in die trant (ja, ik schrijf de * uit.. duh)
Mijn volgende poging gaat zijn om dan maar 2 cursors te gebruiken.. eentje om door tabel1 heen te gaan, en dan een inner cursor voor de koppeltabel.
OF (gaat poging 3 zijn) om 1 kolom aan tabel 1 toe te voegen (met vaste kolomnaam dus) en daarin een string te zetten van de tabel2 ID's die gekoppeld zijn. In mijn .net code haal ik het wel weer uitelkaar... weet nog niet hoe ik zo'n string kan selecten.
Zit ik hiermee op de juiste weg of is er een VEEL simpelere wijze?? Ik zie even door de bomen het bos niet meer..
[a.u.b. alleen serieuze antwoorden. Dit probleem moet op de sql server worden opgelost, niet door .net code als het even kan]