Запрос SQL/sqlite к объединенным таблицам с соответствующими столбцами и объединенными столбцами
Я работаю с базой данных, которая имеет 2 таблицы для каждой компании с 4 компаниями (всего 8 баз данных для этого запроса) и по независящим от меня причинам, которые нельзя изменить. Это также sqlite DB.
Мое приложение в настоящее время должно сделать 8 поездок туда и обратно, чтобы получить все данные. Я хочу объединить это до одного запроса табличного представления, но я не могу понять, как объединить данные так, чтобы это работало. Вот пример таблиц.
Таблица 1 (Тип А)
name zone
ABCD ABC1
DBAA CBA1
Таблица 2 (Тип А)
name zone
ABCD 1234
DBAA 4321
Таблица 1 (Тип Б)
zone weight rate
ABC1 1 0.50
CBA1 2 0.88
Таблица 2 (Тип Б)
zone weight rate
1234 1 0.52
4321 2 0.80
Наконец, я хочу, чтобы вид выглядел так:
name weight Table 1 rate Table 2 rate
CABA 1 0.52 0.50
AEAS 2 0.80 0.88
Я попробовал это для моего оператора SQL:
SELECT 1A.name, 1B.weight, 1B.rate as A from 1A, 1B WHERE 1A.zone = 1B.zone
UNION ALL
SELECT 2A.name, 2B.weight, 2B.rate as B from 2A, 2B WHERE 2A.zone = 2B.zone
Я также попробовал пару операторов объединений после того, как при чтении объединений должно быть соответствующее количество столбцов, но я не могу найти правильный запрос. Любые идеи, что я делаю неправильно или как я могу добиться этого с помощью запроса?
Любая помощь очень ценится!
Обновлен пример Fiddle здесь: http://sqlfiddle.com/
1 ответ
Вот запрос, который выдаст нечто похожее на ваш пример:
SELECT
ZonesOne.name
, RatesOne.weight
, RatesOne.rate as Table1Rate
, RatesTwo.Rate AS Table2Rate
FROM ZonesOne, RatesOne, RatesTwo
WHERE
RatesOne.zone = ZonesOne.zone
AND RatesOne.Weight = RatesTwo.weight
UNION ALL
SELECT
ZonesTwo.name
, RatesOne.weight
, RatesOne.rate as Table1Rate
, RatesTwo.Rate AS Table2Rate
FROM ZonesTwo, RatesOne, RatesTwo
WHERE
RatesOne.zone = ZonesTwo.zone
AND RatesOne.Weight = RatesTwo.weight
Тем не менее, ваш Table 1 Rate
а также Table 2 Rate
кажется, переключаются вокруг. Кроме того, ваши данные из ZonesTwo
имеет две записи для "DBAA".