[SQL] Derde tabel opvragen na Group_concat
Ik probeer in phpmyadmin (dus nog eventjes niet in mijn PHP-code) een tabel op te stellen, waarbij informatie uit drie andere tabellen gehaald wordt. Ik heb de volgende tabellen:
Deployment_registration
Deployment_registration_users
Users
Nu wil ik graag een overzicht per Deployment_registration-rij een overzicht welke gebruikers hier aanwezig zijn geweest. Dit doe ik (omdat het aantal gebruikers variabel/theoretisch oneindig kunnen zin) in een losse tabel, Deployment_registration_users. Ik heb daar nu de volgende code voor gebruikt:
Code (php)
1
2
3
4
2
3
4
SELECT Deployment_registration.ID, Deployment_registration.Location, GROUP_CONCAT(DISTINCT Deployment_registration_users.User_ID SEPARATOR',') AS Deployed_users_ID
FROM Deployment_registration, Deployment_registration_users
WHERE Deployment_registration_users.Deployment_ID = Deployment_registration.ID
GROUP BY Deployment_registration_users.Deployment_ID;
FROM Deployment_registration, Deployment_registration_users
WHERE Deployment_registration_users.Deployment_ID = Deployment_registration.ID
GROUP BY Deployment_registration_users.Deployment_ID;
Dit heb ik na aanleiding van een thread op PHP Hulp en stakoverflow.
Dit resulteert in het volgende:
Resultaat
Nu mijn vraag: Hoe kan ik van de User-ID's naar namen gaan, zoals deze staan in mijn tabel Users, in enkel SQL?
Alvast bedankt!
Tim
Gewijzigd op 03/01/2020 12:14:34 door Tim Klein
Eerst even de huidige situatie. Met aliasssen voor die lange tabelnamen.
En ook de minder compacte syntax voor een JOIN. Dat is naar mijn mening leesbaarder
Code (php)
1
2
3
4
5
2
3
4
5
SELECT reg.ID,
reg.Location,
reguser.User_ID
FROM Deployment_registration reg
JOIN Deployment_registration_users regusers on regusers.Deployment_ID = reg.ID
reg.Location,
reguser.User_ID
FROM Deployment_registration reg
JOIN Deployment_registration_users regusers on regusers.Deployment_ID = reg.ID
Daar wil je gegevens van de user bij hebben:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT reg.ID,
reg.Location,
reguser.User_ID,
user.naam
FROM Deployment_registration reg
JOIN Deployment_registration_users regusers on regusers.Deployment_ID = reg.ID
JOIN Users user on user.ID = regusers.User_ID
reg.Location,
reguser.User_ID,
user.naam
FROM Deployment_registration reg
JOIN Deployment_registration_users regusers on regusers.Deployment_ID = reg.ID
JOIN Users user on user.ID = regusers.User_ID
Je krijgt dan een lijst met alle users die bij zo'n deployment horen.
Dat zou mi. al een unieke lijst moeten zijn. Daar zouden geen dubbele gevonden moeten worden. Distinct moet je niet nodig hebben.
als je dan alsnog wilt group-concatten:
Jeetje, Ivo. Zo had ik er nog niet tegen aan gekeken. Dank je wel!