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?