[Access] Een Join op 2 queries

Pagina: 1
Acties:

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Ik heb een redelijk complex probleem wat volgens mij toch zou moeten kunnen, ik had ooit een voorbeeld hoe maar weet niet waar [n.b.: het is behoorlijk lastig, dus 'm niet te makkelijk opvatten, ik heb 5 jaar db ervaring]


Gegeven deze query
code:
1
2
3
4
5
6
7
8
9
SELECT Kringleden.*, Penalty.Penalty
FROM Kringleden, Penalty
WHERE Kringleden.uid IN (SELECT DlnPenalty.ass_dlnnum
                 FROM Penalty AS DlnPenalty
                 WHERE DlnPenalty.deelnnum = 2)
               OR
    Kringleden.uid IN (SELECT AssDlnPenalty.deelnnum
                 FROM Penalty AS AssDlnPenalty
                WHERE AssDlnPenalty.ass_dlnnum = 2)

Nu wil ik uit de Penalty tabel een met het resulterende Kringlid geassocieerde penalty te voorschijn toveren...
Ik wil dus in "Kringleden.uid IN (SELECT DlnPenalty.ass_dlnnum" en "Kringleden.uid IN (SELECT AssDlnPenalty.deelnnum" als resultaat ook respectievelijk een DlnPenalty en een AssDlnPenalty meegeven welke aan Penalty.Peanlty geprutst moeten worden zodat ik als uitvoer keurig:

Kringleden.uid, Kringleden.naam, Penalty.Penalty krijg voor de geassocieerde deelnemer met nummertje 2

Tnx. a lot, ik herinner me nog dat er een speciaal MS ACCESS foefje voor was dit te doen, maar de help is errug brak, dus ik wordt daar niet veel wijzer van...

Cogito Ergo Credo


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Even ter verduidelijking nog een (niet werkend) voorbeeld van wat ik wil bereiken:
code:
1
2
3
4
5
6
7
8
9
SELECT Kringleden.*, Penalty.Penalty
FROM Kringleden, Penalty
WHERE [Penalty.uid, Kringleden.uid] IN (SELECT DlnPenalty.uid, DlnPenalty.ass_dlnnum
                 FROM Penalty AS DlnPenalty
                 WHERE DlnPenalty.deelnnum = 2)
               OR
     [Penalty.uid, Kringleden.uid] IN (SELECT AssDlnPenalty.deelnnum, AssDlnPenalty.Penalty
                 FROM Penalty AS AssDlnPenalty
                WHERE AssDlnPenalty.ass_dlnnum = 2)

Deze zorgt er trouwens voor dat MS Access XP Pro NL heel hard crasht!!!
code:
1
2
3
4
5
6
7
8
9
SELECT Kringleden.*, Penalty.Penalty
FROM Kringleden, Penalty
WHERE ((Penalty.uid, Kringleden.uid) IN (SELECT DlnPenalty.uid, DlnPenalty.ass_dlnnum
                 FROM Penalty AS DlnPenalty
                 WHERE DlnPenalty.deelnnum = 2))
               OR
     ((Penalty.uid, Kringleden.uid) IN (SELECT AssDlnPenalty.deelnnum
                 FROM Penalty AS AssDlnPenalty
                WHERE AssDlnPenalty.ass_dlnnum = 2));

Cogito Ergo Credo


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Ik heb de oplossing inmiddels al uitgevogeld:
code:
1
2
3
4
5
6
7
8
9
SELECT DISTINCT Kringleden.uid, Kringleden.voornaam, Kringleden.Achternaam, Penalty.Penalty
FROM Kringleden, Penalty
WHERE ((CInt(Kringleden.uid) + CInt(Penalty.Penalty)) IN (SELECT CInt(DlnPenalty.ass_dlnnum) + CInt(DlnPenalty.Penalty)
                 FROM Penalty AS DlnPenalty
                 WHERE DlnPenalty.deelnnum = 2))
               OR
     ((CInt(Kringleden.uid) + CInt(Penalty.Penalty)) IN (SELECT CInt(AssDlnPenalty.deelnnum) + CInt(AssDlnPenalty.Penalty)
                 FROM Penalty AS AssDlnPenalty
                WHERE AssDlnPenalty.ass_dlnnum = 2));

Cogito Ergo Credo