Gegevens opzoeken en weergeven uit een andere tabel bij complexe relaties

Status
Niet open voor verdere reacties.

mijemo

Gebruiker
Lid geworden
25 aug 2014
Berichten
15
Goedemiddag,

Ik loop tegen een uitdaging aan.
Ik heb een simpele versie van mijn database gemaakt, waarmee ik het probleem zal proberen duidelijk te maken.

Ik heb 2 tabellen -
1 bevat gezinsleden en geeft ook aan of men nog thuis woont of niet De gezinsleden zijn aan elkaar gekoppeld door Gezins_id dit is de id van het gezinshoofd
2 bevat adres gegevens, ieder adres komt maar 1 keer voor, dus iedereen die nog thuis woont heeft het vinkje op Ja staan. Degene die niet thuis woont heeft dus een eigen adres.

Mijn vraag is:
Ik wil een overzicht maken gesorteerd op Gezinsnaam en waar bij iedereen het adres wordt weergeven, dus de gezinsleden die thuiswonen met hetzelfde adres als het hoofd.
 

Bijlagen

Eerste opmerking: de relatie tussen gezin en adres had je niet fouter kunnen maken dan je gedaan hebt :). De grootste fout: je hebt <Referentiële Integriteit> niet aangevinkt. En dat maakt de hele relatie in één klap compleet waardeloos (als in: zonder waarde). Daarnaast had je er een Outer Join van gemaakt, en dat zou ik ook nooit doen. Gewoon in je relaties een Inner Join gebruiken, tenzij je het echt nodig hebt. Wat hier niet het geval is.

Daarnaast zit je voorbeeldje een beetje vreemd in elkaar, hoewel de situatie ongetwijfeld wel van toepassing kan zijn. Neem bijvoorbeeld Geke Post, die in het gezin hoort van Keesje Jansen. Keesje hoort op zijn/haar beurt echter thuis in het gezin van Jan Jansen. Zowel Keesje als Geke wonen thuis; dus op Koppand 1. Daar valt niet tegenaan te querien, want zonder toeters of bellen in de strijd te gooien kun je nooit herleiden dat Geke op hetzelfde adres woont als Jan Jansen.
 
Foutje, misschien nu duidelijker?

Tja Michel,

Dat krijg je als je even snel iets in elkaar draait.

Hopelijk is het nu duidelijker.

Ik heb een query gemaakt en dan zie je dat de adressen van de thuiswonenden leeg zijn, dat adres hoeft ook niet ingevuld.
Ik had idd wat gerommeld met wie waarbij hoorde maar nu staat het goed.

Gr
 

Bijlagen

Ik zal er vanavond een bik op werpen. Overigens kan het natuurlijk best dat 3 generaties op 1 adres wonen.
De vraag is dan of je dat er ook uit wilt halen.
 
Hi Michel,

Heb je er nog naar kunnen kijken? Ben erg benieuwd.

Gr
Michel
 
Nog niet. Druk en voetbal....
 
Nog steeds druk?

Hi,

Voetbal is ook erg leuk om naar te kijken.
Hopelijk vind je toch nog ergens tijd binnenkort.

Alvast grote dank!

Grzz
Michel
 
Altijd druk, maar volgens mij wel een oplossing. Ik denk dat je een UNION query nodig hebt, omdat er verschillende selecties zijn voor het opzoeken van een adres. En dat gaat met een UNION dus veel makkelijker dan met een andere oplossing.
PHP:
SELECT GezinID, Achternaam, Voornaam, Thuiswonend, Gezin_Id, Straat, huisnummer, Postcode, Plaats
FROM tblGezin INNER JOIN tblAdres ON tblGezin.[GezinID] = tblAdres.fkAchternaam_Id
WHERE (Gezin_Id Is Null)
UNION SELECT GezinID, Achternaam, Voornaam, Thuiswonend, Gezin_Id, Straat, huisnummer, Postcode, Plaats
FROM tblGezin INNER JOIN tblAdres ON tblGezin.Gezin_Id = tblAdres.fkAchternaam_Id
WHERE (Thuiswonend=True AND Gezin_Id Is Not Null)
UNION SELECT GezinID, Achternaam, Voornaam, Thuiswonend, Gezin_Id, Straat, huisnummer, Postcode, Plaats
FROM tblGezin INNER JOIN tblAdres ON tblGezin.GezinID = tblAdres.fkAchternaam_Id
WHERE (Thuiswonend=False AND Gezin_Id Is Not Null);
Ik heb wat veldnamen aangepast om de logica en de koppelingen beter te laten verlopen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan