Om mijn probleem uit te leggen heb ik de volgende testdatabase gebruikt:
Opzet is dat 1 gebruiker meerdere berichten en meerdere statussen kan hebben. Om het overzicht te verkrijgen van 1 gebruiker wil ik alle data in 1 keer selecteren. Ik dacht dit middels joins te doen maar ik loop daarbij tegen het probleem op dat er dubbele content in mijn resultset terugkomt. Op dit moment gebruik ik de volgende testquery:
Als resultaat krijg ik dan uiteraard de volgende twee rijen terug:
Test - Bericht1 - status1
Test - Bericht2 - status1
Ik snap wel waarom ik dit resultaat terugkrijg maar als ik vervolgens de data om wil zetten naar objecten moet ik allemaal checks invoeren om te kijken of ik niet toevallig 2x dezelfde status toevoeg aan de gebruiker. Is de query zo aan te passen zodat ik bijvoorbeeld onderstaand resultaat krijgt?
Test - Bericht1 - status1
null - Bericht2 - null
Of
Test - Bericht1 - status1
Test - Bericht2 - null
Gebruikers | |
id | naam |
1 | Test |
Berichten | ||
id | gebruikersid | naam |
1 | 1 | Bericht1 |
2 | 1 | Bericht2 |
Status | ||
id | gebruikersid | status |
1 | 1 | Status1 |
Opzet is dat 1 gebruiker meerdere berichten en meerdere statussen kan hebben. Om het overzicht te verkrijgen van 1 gebruiker wil ik alle data in 1 keer selecteren. Ik dacht dit middels joins te doen maar ik loop daarbij tegen het probleem op dat er dubbele content in mijn resultset terugkomt. Op dit moment gebruik ik de volgende testquery:
SQL:
1
2
3
4
5
| SELECT gebruikers.naam, berichten.bericht, status.status FROM gebruikers LEFT JOIN berichten ON gebruikers.id = gebruikers.id LEFT JOIN status ON status.gebruikersid = gebruikers.id WHERE gebruikers.id = '1' |
Als resultaat krijg ik dan uiteraard de volgende twee rijen terug:
Test - Bericht1 - status1
Test - Bericht2 - status1
Ik snap wel waarom ik dit resultaat terugkrijg maar als ik vervolgens de data om wil zetten naar objecten moet ik allemaal checks invoeren om te kijken of ik niet toevallig 2x dezelfde status toevoeg aan de gebruiker. Is de query zo aan te passen zodat ik bijvoorbeeld onderstaand resultaat krijgt?
Test - Bericht1 - status1
null - Bericht2 - null
Of
Test - Bericht1 - status1
Test - Bericht2 - null
...