Toon posts:

[MYSQL / PHP] Snap de joins volgens mij nog niet helemaal

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleempje met het selecteren van gegevens uit een tabel dmv een JOIN.

Ik gebruik nu deze query...

--
SELECT * FROM ContactPersonen INNER JOIN ContactPersonen_per_Klant ON ContactPersonen.ContactID = ContactPersonen_per_Klant.ContactID INNER JOIN Klanten ON Klanten.KlantID = ContactPersonen_per_Klant.KlantID INNER JOIN Adressen_per_Klant ON Adressen_per_Klant.KlantID = Klanten.KlantID INNER JOIN Adressen ON Adressen_per_Klant.AdresID = Adressen.AdresID WHERE Klanten.KlantID = '$klantid' ORDER BY Klanten.KlantNaam
--

Het probleem is nu dat als er wel een Klant in de tabel Klanten staat en een Adres, maar geen contactpersonen bij die klant, de query geen resultaat terug geeft...

Volgens mij komt dat doordat ik select FROM ContactPersonen, nu heb ik daar al mee geprobeerd en er eerst KLanten van gemaakt.

--
SELECT * FROM Klanten
INNER JOIN Adressen_per_Klant ON Adressen_per_Klant.KlantID = Klanten.KlantID
INNER JOIN Adressen ON Adressen_per_Klant.AdresID = Adressen.AdresID
INNER JOIN ContactPersonen_per_Klant ON Klanten.KlantID = ContactPersonen_per_Klant.KlantID
LEFT JOIN ContactPersonen ON Klanten.KlantID = ContactPersonen_per_Klant.KlantID
WHERE Klanten.KlantID = '$klantid'
--

Kwam ik op deze, maar die geeft ook niks terug...

Weet iemand een juiste query hiervoor en kan mij even helpen?

Alvast bedankt,

hieronder de structuur van de DB....


------------
| Adressen |
|------------|
|AdresID |
|Adres |
| |
------------

----------------------
| Adressen_per_Klant |
|----------------------|
| KlantID |
| AdresID |
| |
----------------------

------------
| Klanten |
|------------|
| KlantID |
| KlantNaam |
| |
------------

-------------------
| ContactPersonen |
|-------------------|
| ContactID |
| Naam |
| |
-------------------

-----------------------------
| Contactpersonen_per_Klant |
|-----------------------------|
| KlantID |
| ContactID |
| |
-----------------------------

  • whoami
  • Registratie: December 2000
  • Laatst online: 31-08 22:34
Wat je nodig hebt is een outer join of een left join.

sql tutorial

https://fgheysels.github.io/


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 30-08 22:28
Zou je de query's willen opmaken zoals in de FAQ?

Dus zo:

code:
1
2
3
4
5
6
SELECT * FROM ContactPersonen 
    INNER JOIN ContactPersonen_per_Klant ON ContactPersonen.ContactID = ContactPersonen_per_Klant.ContactID 
    INNER JOIN Klanten ON Klanten.KlantID = ContactPersonen_per_Klant.KlantID 
    INNER JOIN Adressen_per_Klant ON Adressen_per_Klant.KlantID = Klanten.KlantID 
    INNER JOIN Adressen ON Adressen_per_Klant.AdresID = Adressen.AdresID 
        WHERE Klanten.KlantID = '$klantid' ORDER BY Klanten.KlantNaam

Verbouwing


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Dus een klant kan meerdere adressen hebben, en op 1 adres kunnen meerdere klanten zitten? Hmm...

En 1 contactpersoon kan bij meerdere klanten actief zijn, en 1 klant kan ook meerdere contactpersonen hebben...

Klopt die situatie? Of is je DB-ontwerp niet helemaal zoals die moet? :)

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Bosmonster schreef op 09 oktober 2002 @ 16:26:
Klopt die situatie? Of is je DB-ontwerp niet helemaal zoals die moet? :)
Ik vrees het laatste. :)

Never underestimate the power of