Toon posts:

[SQL] Query over 3 tabellen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik zit met een SQL query waar ik niet uit kom.
Het probleem is als volgt:

Ik werk voor deze query met 3 tabellen. Laten we zeggen tabel A, B en C.
Tabel A bevat algemene informatie en een nummer als pk, supertype.
Tabel B en C bevatten specifieke informatie over een record in tabel A, subtypes.
Het is niet mogelijk dat een nummer uit tabel A voorkomt in B en C. Het is altijd B of C, niet beide, of geeneen.

Nu wil ik graag een view aanmaken waarin ik een overzicht heb met alle nummers en daarbij of ze van het type B of C zijn.
Het liefst wil ik dit realiseren met 2 kolommen, nummer en type. En anders met 3 kolommen, nummer,
B en C.

Dit is wat ik al had als query, maar dan krijg ik een hoop dubbele informatie:

code:
1
2
3
4
5
6
7
8
SELECT DISTINCT dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV AS Declaratienr, 
IIf(Not IsNull (dbo_POLIKLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV), dbo_POLIKLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV) AS Poliklinisch,
IIf(Not IsNull (dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV), dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV) AS Klinisch

FROM dbo_POLIKLINISCH, dbo_KLINISCHE_DECLARATIES_ZKV, dbo_KLINISCH

WHERE dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV = dbo_POLIKLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV
OR dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV = dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV


Op deze manier kom ik nog steeds uit op pak m beet 20 rijen. Voor alle duidelijkheid:

dbo_KLINISCHE_DECLARATIES_ZKV = Tabel A
dbo_KLINISCH = Tabel B
dbo_POLIKLINISCH = Tabel C
MACHTIGING_MACHTIGINGSNR_ZKV = pk Tabel A, pk/fk Tabel B en C.

Ik hoop dat iemand mij hier mee kan helpen, ik ga er zelf mee verder en hopelijk vindt ik nog zelf een oplossing, maar ik wil hier niet te lang op vastzitten. Er zijn natuurlijk mogelijkheden om het minder mooi te doen, maar ik heb het gevoel dat het mogelijk moet zijn wat ik in gedachten heb.

Alvast bedankt voor de hulp,

Arnaud.

[edit]
Ook dit werkt niet zoals ik het wil. Dan zit ik nog met 12 rijen. Met 5 verschillende machtigingen.

code:
1
2
3
4
5
6
7
8
9
SELECT DISTINCT 
dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV AS Declaratienr, 
dbo_POLIKLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV AS Poliklinisch, 
dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV AS Klinisch

FROM dbo_POLIKLINISCH, dbo_KLINISCHE_DECLARATIES_ZKV, dbo_KLINISCH

WHERE dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV = dbo_POLIKLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV
OR dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV = dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV

  • icecoolsniper
  • Registratie: Juni 2002
  • Laatst online: 06-05 21:43

icecoolsniper

never run from a sniper!

misschien een group by gebruiken??

http://www.tweakers.net/gallery/58175/sys


Verwijderd

Topicstarter
Nevermind, ik dacht veels te ingewikkeld. Ik heb het als volgt opgelost:

code:
1
2
3
4
5
6
SELECT dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV AS Declaratienr, 
IIf(IsNull (dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV), "Poliklinisch", "Klinisch") As Type

FROM  dbo_KLINISCHE_DECLARATIES_ZKV

LEFT JOIN dbo_KLINISCH ON dbo_KLINISCHE_DECLARATIES_ZKV.MACHTIGING_MACHTIGINGSNR_ZKV=dbo_KLINISCH.MACHTIGING_MACHTIGINGSNR_ZKV