Ваша проблема заключается в том, что, заключая 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;
Результат: -
