Я пытаюсь объединить 2 таблицы с 2 столбцами в каждой:
- одна с городами |Имена
- один с городами |Улицы
Один столбец (Cities
) в каждой таблице содержит аналогичную информацию, но другие столбцы (Names
и Streets
) независимы в каждой таблице.
Использованиеобщий столбец, я просто хочу объединить и перечислить все другие элементы в следующем столбце 2 в виде одной таблицы:
Cities | Names | Streets
Перечисление всех Names
и Streets
в исходных таблицах справильный City
в первом столбце, без повторов Names
или Streets
(и добавление пробелов, если в определенном City
.
Резюме большездесь:
https://docs.google.com/spreadsheets/d/e/2PACX-1vQxHJopVBcuUN9RK5fHs7qhVxdry4v3HB6Az3LrRWXJxspV4abTTFS2VQka87GG3s9DHlT6FKUKPWal/pubhtml
Я пробовал разные объединения, но затем я получаю все комбинации между Names
и Streets
, что не то, что я хочу.
Это не работает:
select *
from city, street
where city.city = street.city
order by city.name asc, street.name asc;
Пожалуйста, посмотрите GoogleSheet здесь: https://docs.google.com/spreadsheets/d/e/2PACX-1vQxHJopVBcuUN9RK5fHs7qhVxdry4v3HB6Az3LrRWXJxspV4abTTFS2VQka87GG3s9DHlT6FKUKPWal/pubhtml
Добавление кода для создания таблиц на тот случай, если кто-то захочет попробовать это:
CREATE TABLE names
(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
city VARCHAR(30) NOT NULL,
name VARCHAR(30) NOT NULL
);
CREATE TABLE streets
(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
city VARCHAR(30) NOT NULL,
street VARCHAR(30) NOT NULL
);
INSERT INTO `names` (`id`, `city`, `name`) VALUES (1, 'paris', 'nameP1');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (2, 'paris', 'nameP2');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (3, 'paris', 'nameP3');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (4, 'paris', 'nameP4');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (5, 'paris', 'nameP5');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (6, 'tokyo', 'nameT1');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (7, 'tokyo', 'nameT2');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (8, 'tokyo', 'nameT3');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (9, 'tokyo', 'nameT4');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (10, 'tokyo', 'nameT5');
INSERT INTO `names` (`id`, `city`, `name`) VALUES (11, 'tokyo', 'nameT6');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (1, 'paris', 'streetP1');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (2, 'paris', 'streetP2');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (3, 'paris', 'streetP3');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (4, 'tokyo', 'streetT1');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (5, 'tokyo', 'streetT2');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (6, 'tokyo', 'streetT3');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (7, 'tokyo', 'streetT4');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (8, 'tokyo', 'streetT5');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (9, 'tokyo', 'streetT6');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (10, 'tokyo', 'streetT7');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (11, 'tokyo', 'streetT8');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (12, 'tokyo', 'streetT9');
INSERT INTO `streets` (`id`, `city`, `street`) VALUES (13, 'tokyo', 'streetT10');
Добавление сюда моих таблиц и ожидаемых результатов:
Таблица Имена :
+---—+-------+--------+
| id | City | Names |
+---—+-------+--------+
| 1 | paris | nameP1 |
| 2 | paris | nameP2 |
| 3 | paris | nameP3 |
| 4 | paris | nameP4 |
| 5 | paris | nameP5 |
| 6 | tokyo | nameT1 |
| 7 | tokyo | nameT2 |
| 8 | tokyo | nameT3 |
| 9 | tokyo | nameT4 |
| 10 | tokyo | nameT5 |
| 11 | tokyo | nameT6 |
+---—+-------+--------+
Таблица улицы :
+----+-------+-----------+
| id | City | Streets |
+----+-------+-----------+
| 1 | paris | streetP1 |
| 2 | paris | streetP2 |
| 3 | paris | streetP3 |
| 4 | tokyo | streetT1 |
| 5 | tokyo | streetT2 |
| 6 | tokyo | streetT3 |
| 7 | tokyo | streetT4 |
| 8 | tokyo | streetT5 |
| 9 | tokyo | streetT6 |
| 10 | tokyo | streetT7 |
| 11 | tokyo | streetT8 |
| 12 | tokyo | streetT9 |
| 13 | tokyo | streetT10 |
+----+-------+-----------+
Ожидаемые результаты:
+-------+---------+-----------+
| City | Names | Streets |
+-------+---------+-----------+
| paris | nameP1 | streetP1 |
| paris | nameP2 | streetP2 |
| paris | nameP3 | streetP3 |
| paris | nameP4 | |
| paris | nameP5 | |
| tokyo | nameT1 | streetT1 |
| tokyo | nameT2 | streetT2 |
| tokyo | nameT3 | streetT3 |
| tokyo | nameT4 | streetT4 |
| tokyo | nameT5 | streetT5 |
| tokyo | nameT6 | streetT6 |
| tokyo | | streetT7 |
| tokyo | | streetT8 |
| tokyo | | streetT9 |
| tokyo | | streetT10 |
+-------+---------+-----------+
Обратите внимание:
- Таблица 'списки имен 5 имен в Париже, 6 имен в Токио
- Таблица «улиц» списков 3 улицы в Париже, 10 улиц в Токио
- В результатах должен быть указан 2 города в столбце 1 с5 названий и 3 улицы в Париже в следующих 2 колонках рядом с Парижем, а затем 6 названий и 10 улиц в Токио рядом с Токио
- нет никакой связи между названиями и улицами, за исключением того, что они находятся вв том же городе
- в Париже больше названий, чем улиц, в Токио больше улиц, поэтому некоторые значения оставлены пустыми, чтобы учесть это
В ответ на ответ Гордона ниже:почти там, но не на 100%, так как я хочу, чтобы городские ссоры были вместе.Если у меня больше улиц, то это не совсем так - см .:
Если я начну с:
CREATE TABLE names (id INT (6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, город VARCHAR (30) NOT NULL, имя VARCHAR (30) NOT NULL);
CREATE TABLE street (id INT (6) UNSIGNED AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ, город VARCHAR (30) NOT NULL, улица VARCHAR (30) NOT NULL);
INSERT INTO names
(id
, city
, name
) VALUES (1, 'paris', 'nameP1');INSERT INTO names
(id
, city
, name
) VALUES (2, 'paris', 'nameP2');INSERT INTO names
(id
, city
, name
) VALUES (3, 'paris', 'nameP3');INSERT INTO names
(id
, city
, name
) VALUES (4, 'paris', 'nameP4');INSERT INTO names
(id
, city
, name
) VALUES (5, 'paris', 'nameP5');INSERT INTO names
(id
, city
, name
) VALUES (6, 'токио', 'nameT1');INSERT INTO names
(id
, city
, name
) VALUES (7, 'токио', 'nameT2');INSERT INTO names
(id
, city
, name
) VALUES (8, 'tokyo', 'nameT3');INSERT INTO names
(id
, city
, name
) VALUES (9, 'токио', 'nameT4');INSERT INTO names
(id
, city
, name
) VALUES (10, 'токио', 'nameT5');INSERT INTO names
(id
, city
, name
) VALUES (11, 'tokyo', 'nameT6');
INSERT INTO streets
(id
, city
, street
) ЗНАЧЕНИЯ (1, 'paris', 'streetP1');INSERT INTO streets
(id
, city
, street
) VALUES (2, 'paris', 'streetP2');INSERT INTO streets
(id
, city
, street
) VALUES (3, 'paris', 'streetP3');INSERT INTO streets
(id
, city
, street
) VALUES (3, 'paris', 'streetP4');INSERT INTO streets
(id
, city
, street
) VALUES (3, 'paris', 'streetP5');INSERT INTO streets
(id
, city
, street
) VALUES (3, 'paris', 'streetP6');INSERT INTO streets
(id
, city
, street
) VALUES (3, 'paris', 'streetP7');INSERT INTO streets
(id
, city
, street
) VALUES (4, «Токио», «Улица T1»);INSERT INTO streets
(id
, city
, street
) VALUES (5, «Токио», «Улица T2»);ВСТАВИТЬ INTO streets
(id
, city
, street
) ЗНАЧЕНИЯ (6, «Токио», «Улица T3»);INSERT INTO streets
(id
, city
, street
) VALUES (7, «Токио», «Улица T4»);INSERT INTO streets
(id
, city
, street
) VALUES (8, «Токио», «Улица T5»);INSERT INTO streets
(id
, city
, street
) ЗНАЧЕНИЯ (9, «Токио», «Улица T6»);INSERT INTO streets
(id
, city
, street
) VALUES (10, «Токио», «Улица T7»);INSERT INTO streets
(id
, city
, street
) ЗНАЧЕНИЯ (11, «Токио», «Улица T8»);INSERT INTO streets
(id
, city
, street
) ЗНАЧЕНИЯ (12, «Токио», «Улица T9»);INSERT INTO streets
(id
, city
, street
) VALUES (13, 'tokyo', 'streetT10');
Я создаю эти 2 таблицы:
Имена ТАБЛИЦЫ + ——— + ——-——-— + —-—-———— + |id |Город |Имена |+ ——— + ————-—-— + ———-———— + |1 |Париж |nameP1 ||2 |Париж |nameP2 ||3 |Париж |nameP3 ||4 |Париж |nameP4 ||5 |Париж |nameP5 ||6 |Токио |nameT1 ||7 |Токио |nameT2 ||8 |Токио |nameT3 ||9 |Токио |nameT4 ||10 |Токио |nameT5 ||11 |Токио |nameT6 |+ ——— + ————-—-— + ———-———— +
СТОЛОВЫЕ улицы + ——-— + ——-——-— + —————-—-——— + |id |Город |Улицы |+ ——-— + —————-— + —————-————— + |1 |Париж |улицаP1 ||2 |Париж |улицаP2 ||3 |Париж |улицаP3 ||4 |Париж |улицаP4 ||5 |Париж |улицаP5 ||6 |Париж |улицаP6 ||7 |Париж |улицаP7 ||8 |Токио |streetT1 ||9 |Токио |streetT2 ||10 |Токио |streetT3 ||11 |Токио |streetT4 ||12 |Токио |streetT5 ||13 |Токио |streetT6 ||14 |Токио |streetT7 ||15 |Токио |streetT8 ||16 |Токио |streetT9 ||17 |Токио |streetT10 |+ ——— + ————-—-— + ———-———-——— +
Я хочу получить:
+ ——-——-- + —————-——— + ———-——-——-— + |Город |Имена |Улицы |+ —————-— + —————-——— + ————-————- + |Париж |nameP1 |улицаP1 ||Париж |nameP2 |улицаP2 ||Париж |nameP3 |улицаP3 ||Париж |nameP4 |улицаP4 ||Париж |nameP5 |улицаP5 ||Париж ||улицаP6 ||Париж ||улицаP7 ||Токио |nameT1 |streetT1 ||Токио |nameT2 |streetT2 ||Токио |nameT3 |streetT3 ||Токио |nameT4 |streetT4 ||Токио |nameT5 |streetT5 ||Токио |nameT6 |streetT6 ||Токио ||streetT7 ||Токио ||streetT8 ||Токио ||streetT9 ||Токио ||streetT10 |+ ——-——- + + —————-——— + ———-——-——- +
Но с первоначальным ответом Гордона ниже я получаю:
+ ——-——-— + —————-——— + ———-——-——- + + |Город |Имена |Улицы |+ —————-— + —————-——— + ————-————- + |Париж |nameP1 |улицаP1 ||Париж |nameP2 |улицаP2 ||Париж |nameP3 |улицаP3 ||Париж |nameP4 |улицаP4 ||Париж |nameP5 |улицаP5 ||Токио |nameT1 |streetT1 ||Токио |nameT2 |streetT10 ||Токио |nameT3 |streetT2 ||Токио |nameT4 |streetT3 ||Токио |nameT5 |streetT4 ||Токио |nameT6 |streetT5 ||Париж ||улицаP6 ||Париж ||улицаP7 ||Токио ||streetT6 ||Токио ||streetT7 ||Токио ||streetT8 ||Токио ||streetT9 |+ ——-——-— + —————-——— + ———-——-——- +
Есть идеи?Кажется, где-то просто заказ, но я не могу понять ... Спасибо !!