Запрос 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".

Другие вопросы по тегам