J'ai deux tables dans PostgreSQL pays et villes. J'utilise node-postgres pour nodejs.
DES PAYS
[{ id: 1, country: 'USA', cities: [{ id: 1, city: 'New York', },{ id: 2, city: 'Chicago', },{ id: 4, city: 'Boston', }] }, { id: 2, country: 'GERMANY', cities: [{ id: 6, city: 'Berlin', }], ... }]
VILLES
id name country_id 1 New York 1 2 Chicago 1 3 Hong Kong 3 4 Boston 1 5 Beijing 3 6 Berlin 2
Si possible. Puis-je obtenir des données comme?
id name 1 USA 2 GERMANY 3 CHINA
3 Réponses :
Dans Postgres, vous pouvez agréger comme:
select c.id, c.name, json_agg(json_build_object('id', ci.id, 'name', ci.name)) as cities from countries c join cities ci on ci.country_id = c.id group by c.id;
Cela renvoie le résultat en utilisant les types Postgres.
En tant que Json, cela ressemblerait à:
select c.id, c.name, array_agg( (ci.id, ci.name) ) as cities from countries c join cities ci on ci.country_id = c.id group by c.id;
Vous pouvez essayer une jointure interne Quelque chose comme ça fonctionnera
SELECT countries.id, countries.name, cities.id, cities.name FROM countries INNER JOIN countries ON cities counties.id = cities.country_id;
Pour plus d'informations, vous pouvez visiter la documentation postgreql
Vous pouvez essayer ce qui suit (effectué sur MySQL Workbench):
select a.id as ID, a.name as CityName,b.name as CountryName from cities as a INNER join couNtries as b on a.COUNTRY_id=b.id GROUP BY 2;
Veuillez essayer la requête ci-dessus et j'ai utilisé Mysql Workbench
Vous avez strictement besoin d'une sortie JSON?