Я пытаюсь показать городам и почтовым индексам конкретный город в.mysql multiple-subquery group_concat query
Моя база данных довольно хорошо структурирована, с таблицей, такой как город, почтовый индекс и город. Существуют также таблицы для каждого из отношений city_postcode & city_borough.
В идеале я хочу возвращенные данные, как:
"Abbey Wood", "SE2", "Бекслей, Гринвич" "Барбакан", "EC1, EC2", "Лондон Сити"
Я пробовал несколько разных подходов, и я близок, но пока нет.
Любая помощь будет оценена ... :) До сих пор я пытался
SELECT DISTINCT t.town,
GROUP_CONCAT(DISTINCT p.postcode SEPARATOR ', ') AS 'postcode',
GROUP_CONCAT(DISTINCT b.borough SEPARATOR ', ') AS 'borough'
FROM coverage_towns AS t,
coverage_boroughs AS b,
coverage_postcodes AS p,
coverage_towns_boroughs AS tb,
coverage_towns_postcodes AS tp
WHERE t.id = tp.town_id
AND p.id = tp.postcode_id
AND b.id = tb.borough_id
GROUP BY t.town
ORDER BY t.town ASC
Который возвращает
"Abbey Wood", "SE2", "Southwark, Hammersmith and Fulham, Tower Hamlets, Wandsworth, Enfield, Newham, LOTS MORE HERE"
"Barbican", "EC1, EC2", "Brent, Greenwich, Kensington and Chelsea, Westminster, Camden, LOTS MORE HERE"
Я также попытался
SELECT DISTINCT t.town, (
SELECT SQL_CACHE DISTINCT GROUP_CONCAT(p1.postcode
SEPARATOR ', ')
FROM coverage_postcodes AS p1
WHERE p1.id = tp.postcode_id
) AS 'postcode', (
SELECT SQL_CACHE DISTINCT GROUP_CONCAT(b1.borough
SEPARATOR ', ')
FROM coverage_boroughs AS b1
WHERE b1.id = tb.borough_id
) AS 'borough'
FROM coverage_towns AS t, coverage_boroughs AS b, coverage_postcodes AS p, coverage_towns_boroughs AS tb, coverage_towns_postcodes AS tp
WHERE t.id = tp.town_id
AND p.id = tp.postcode_id
AND b.id = tb.borough_id
GROUP BY t.town
ORDER BY t.town ASC
Какие возвращается
"Abbey Wood", "SE2", "Greenwich"
"Acton", "W3", "Greenwich"
"Aldersbrook", "E12", "Greenwich"
Это, конечно, улучшение на колонке the2nd, но теперь я получаю "Abbey Wood", "SE2", "Саутварк, Хаммерсмит и Фулхэм, Tower Hamlets Уондзуотского, Enfield, Newham, МНОГО ЕЩЕ ЗДЕСЬ" " Барбикан "," EC1, EC2 "," Брент, Гринвич, Кенсингтон и Челси ", Вестминстер, Камден, ПОТЕРИ БОЛЬШЕ ЗДЕСЬ" где я ищу: "Abbey Wood", "SE2", "Bexley, Greenwich « « Барбикан »,« EC1, EC2 »,« Город Лондон » – user482957
@ user482957: вам не хватает ссылки между' tb' и 't', в предложении' where' – Andomar