login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleempje met SQL (Opgelost)

Offline Eefje_1987 - 11/05/2009 09:27 (laatste wijziging 11/05/2009 16:16)
Avatar van Eefje_1987Nieuw lid Hoi,

Ik heb een probleempje met mijn SQL statement. Ik zal het probleem zo goed mogelijk trachten te schetsen.

Ik vertrek vanuit tabel A, daarna haal ik alle gegevens uit tabel B, waar de 'link_A' in tabel B gelijk is aan het 'id' veld in tabel A. Tot daar gaat het goed, daarna volgt het probleem. In tabel B zit ook een veld 'link_C'. Soms bevat dat een waarde, soms bevat dat 'null'. Nu ik moet dus van tabel B naar tabel C. Ik stel 'lnk_C' gelijk aan de 'id' van tabel C. Maar natuurlijk haalt hij enkel de gegevens op uit tabel B en C waar er een match is (waar link_c dus niet 'null' is).

Nu is mijn vraag hoe je het moet coderen dat hij alle gegevens uit tabel B ook toont, ookal hebben ze bij 'link_c' 'null' als waarde en is er geen overeenkomstige waarde in tabel C.

Dat je dus iets hebt als:

A_naam_______B_naam________C_naam

1_____________1______________1
2_____________2______________2
3_____________3_____________________| Waar er dus geen match is tussen tabel B en C


Alvast bedankt!


Ik heb maar '_' geplaatst omdat hij de spaties negeerde, dan stond het maar op elkaar geplakt.

4 antwoorden

Gesponsorde links
Offline ArieMedia - 11/05/2009 09:32 (laatste wijziging 11/05/2009 09:37)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Dus als ik het goed begrijp.. Als het veld in tabel C leeg is, moet je ook een record te zien krijgen?

En waarmee werk je als ik het vragen mag? Is het acces of mysql/mssql... Of nog een andere database?
Offline Eefje_1987 - 11/05/2009 09:41
Avatar van Eefje_1987 Nieuw lid Wel het is zoals dit

Tabel B_____________________Tabel C
B_ID_______________________C_ID
B_NAAM____________________C_NAAM
B_LINK_C


B_LINK_C is gekoppeld aan C_ID

Als dit dat de waardes zijn:

B_LINK_C_________________C_ID
1________________________1
2________________________2
null

Dan worden de 2 eerste getoond, omdat er in C een ID voor bestaat. Maar alle records met 'null' als 'B_LINK_C' worden niet opgenomen omdat er geen match is. Maar het zou wel getoond moeten worden.

Mijn huidige sql ziet er zo uit:

select a_naam, b_naam, c_naam
from a, b, c
where b_id = a_link_b
and c_id = b_link_c

Met deze code krijg ik in bovenstaand voorbeeldje enkel de 2 eerste als result, de 3de niet. Voor die 3de bestaat er uiteraard geen 'c_naam', dat zou dan ook gewoon leeg moeten zijn.
Offline ArieMedia - 11/05/2009 09:58 (laatste wijziging 11/05/2009 09:58)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Dan snap ik het probleem nu.. en dit zal als het goed is moeten werken..

  1. SELECT a_naam, b_naam, c_naam
  2. FROM a
  3. LEFT JOIN b ON a_link_b = b_id
  4. LEFT JOIN c ON b_link_c = c_id


Iniedergeval een LEFT-JOIN gebruiken.
Offline Eefje_1987 - 11/05/2009 11:27
Avatar van Eefje_1987 Nieuw lid Dat is het! Bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.167s