Er is een table Auto welke een relatie heeft met zichzelf (recursief). Zo ziet deze eruit (srry ff zonder opmaak):
ID | NAAM | VOLGID
1 | BMW | NULL
2 | 3 serie | 1
3 | 4 drs | 2
4 | X5 | 1
5 | Mercedes | NULL
6 | SLK | 5
7 | 4 drs | 6
Nu heb ik een table Advertentie die er zo uit ziet:
ID | ID_AUTO | ID_USER | OMSCHRIJVING
1 | 6 | 12 | test 1
2 | 1 | 26 | test 2
3 | 3 | 31 | test 3
De table Advertentie en Gebruiker JOIN ik met FROM Advertentie JOIN Gebruiker ON Advertentie.ID_USER = Gebruiker.ID_USER. Hiermee koppel ik de gebruikergegevens aan de gerelateerde advertenties. Dit is eenvoudig en hoef ik niet verder toe te lichten lijkt mij.
Nu wil ik een SELECT query maken welke de volgende overzicht geeft:
ID_ADVERTENTIE | NAAM_USER | PLAATS_USER | MERK | TYPE | EXTRA
1 | Groen | A'dam | Mercedes | SLK | NULL
2 | de Wild | Breda | BMW | NULL | NULL
3 | Jansen | Den Helder | BMW | 3 serie | 4 drs
De volgende query heb ik gemaakt, maar geeft dezelfde advertentie met alle mogelijke combinaties Auto weer:
In deze query maak ik waarschijnlijk een fout bij de WHERE conditie. Het is eenmaal lastig om na te gaan welk kind bij welke ouder hoort. Dat wil ik in de query duidelijk maken.
Deze code is enkel voorbeeld, de code waar ik aan werk mag niet gepost worden, dus je antwoord moet met behulp van dit voorbeeld komen. Het is lastig uit te leggen, ik ben er ook al uren mee bezig, maar krijg nog steeds niet het gewenste resultaat.
Hoe gaat deze query wel werken???
ID | NAAM | VOLGID
1 | BMW | NULL
2 | 3 serie | 1
3 | 4 drs | 2
4 | X5 | 1
5 | Mercedes | NULL
6 | SLK | 5
7 | 4 drs | 6
Nu heb ik een table Advertentie die er zo uit ziet:
ID | ID_AUTO | ID_USER | OMSCHRIJVING
1 | 6 | 12 | test 1
2 | 1 | 26 | test 2
3 | 3 | 31 | test 3
De table Advertentie en Gebruiker JOIN ik met FROM Advertentie JOIN Gebruiker ON Advertentie.ID_USER = Gebruiker.ID_USER. Hiermee koppel ik de gebruikergegevens aan de gerelateerde advertenties. Dit is eenvoudig en hoef ik niet verder toe te lichten lijkt mij.
Nu wil ik een SELECT query maken welke de volgende overzicht geeft:
ID_ADVERTENTIE | NAAM_USER | PLAATS_USER | MERK | TYPE | EXTRA
1 | Groen | A'dam | Mercedes | SLK | NULL
2 | de Wild | Breda | BMW | NULL | NULL
3 | Jansen | Den Helder | BMW | 3 serie | 4 drs
De volgende query heb ik gemaakt, maar geeft dezelfde advertentie met alle mogelijke combinaties Auto weer:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT A.ID AS ID_ADVERTENTIE, G.NAAM_USER, G.PLAATS_USER, Merk.ID AS MERK, Type.ID AS TYPE, Extra.ID AS EXTRA FROM Advertentie A JOIN Gebruiker G ON A.ID = G.ID_USER JOIN Auto Merk ON A.ID_AUTO = Merk.ID LEFT OUTER JOIN Auto Type ON Merk.ID = Type.VOLGID LEFT OUTER JOIN Auto Extra ON Type.ID = Extra.VOLGID WHERE (Merk.ID = A.ID AND Merk.IDVOLG IS NULL) OR (Type.ID = A.ID AND Type.VOLGID = Merk.ID AND Type.ID = Extra.VOLGID) OR (Extra.ID = A.ID AND Extra.VOLGID = Type.ID) |
In deze query maak ik waarschijnlijk een fout bij de WHERE conditie. Het is eenmaal lastig om na te gaan welk kind bij welke ouder hoort. Dat wil ik in de query duidelijk maken.
Deze code is enkel voorbeeld, de code waar ik aan werk mag niet gepost worden, dus je antwoord moet met behulp van dit voorbeeld komen. Het is lastig uit te leggen, ik ben er ook al uren mee bezig, maar krijg nog steeds niet het gewenste resultaat.
Hoe gaat deze query wel werken???
[ Voor 3% gewijzigd door whoami op 15-10-2003 13:58 . Reden: query onleesbaar ]