Hoi allemaal!

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:


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;


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
ik zou het zonder group-concat doen, aangezien je dan later alles weer moet splitten in veel gevallen.

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


SELECT 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:


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


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:


SELECT reg.ID, 
       reg.Location, 
       group_concat(user.naam) users
FROM Deployment_registration reg
JOIN Deployment_registration_users regusers on regusers.Deployment_ID = reg.ID
JOIN Users user on user.ID = regusers.User_ID
GROUP BY reg.ID, reg.Location
Jeetje, Ivo. Zo had ik er nog niet tegen aan gekeken. Dank je wel!

Reageren