Sqlite: объединить два столбца среди возвращенных из выбора - PullRequest
0 голосов
/ 09 октября 2018

Мне нужна помощь по следующему сценарию.

У меня есть две таблицы, первая (ТаблицаA) - это список людей, а вторая (ТаблицаB) - список городов.

ТаблицаAимеет столбец с именем city_id, который ссылается на идентификатор в таблице B.

Я использую следующий запрос:

SELECT TableA.name,TableB.city,TableB.state FROM TableA LEFT JOIN TableB ON TableA.city_id=TableB.id;

в результирующем запросе есть три столбца: имя, город, штат.

Можно ли получить только 2 столбца: имя, город + штат?

Я без удачи попробовал следующее:

SELECT TableA.name,(`TableB.city` || ' ' || `TableB.state`) FROM TableA LEFT JOIN TableB ON TableA.city_id=TableB.id;

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 09 октября 2018

Ваша проблема заключается в том, что, заключая TableB.city в `, вы говорите, что столбец называется TableB.city (т.е. часть TableB становится частью имени столбца), и этот столбец не будет найден(аналогично для TableB.state).

Поэтому исправление состоит в том, чтобы не заключать таблицу и столбец в `.

Должно работать следующее: -

SELECT TABLEA.name,TableB.city||' '||TableB.state FROM TableA JOIN TableB ON TableA.city_id = TableB.id;

Полный пример: -

DROP TABLE IF EXISTS TableA;
DROP TABLE If EXISTS TableB;
CREATE TABLE IF NOT EXISTS TableA (id INTEGER PRIMARY KEY, name TEXT, city_id INTEGER);
CREATE TABLE IF NOT EXISTS TableB (id INTEGER PRIMARY KEY, city TEXT, state TEXT);
INSERT INTO TableB (city,state) VALUES ('Miami','Florida'),('Dallas','Texas');
INSERT INTO TableA (name,city_id) VALUES ('Fred',2),('Mary',1),('Tom',1),('Susan',2);
SELECT TABLEA.name,TableB.city||' '||TableB.state FROM TableA JOIN TableB ON TableA.city_id = TableB.id;

Результат: -

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...