[SQL] Derde tabel opvragen na Group_concat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Tim Klein

Tim Klein

03/01/2020 12:11:09
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


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
 
PHP hulp

PHP hulp

27/04/2024 04:43:59
 
Ivo P

Ivo P

03/01/2020 12:34:48
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Daar wil je gegevens van de user bij hebben:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
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
 
Tim Klein

Tim Klein

03/01/2020 13:37:08
Quote Anchor link
Jeetje, Ivo. Zo had ik er nog niet tegen aan gekeken. Dank je wel!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.