Создавайте комбинации из разных таблиц - PullRequest
0 голосов
/ 18 января 2019

У меня есть следующие таблицы:

Таблица 1

name, weight
A, 4
B, 2
C, 1

Таблица 2

name, weight
AA, 4
BB, 2
CC, 1

Таблица 3

name, weight
AAA, 4
BBB, 2
CCC, 1

Я хочусоздать все комбинации таблиц, а затем упорядочить их по общему весу (сумме весов).Пример

A, AA, AAA, 12
A, BB, AAA, 10
A, CC, AAA, 9
A, AA, BBB, 10
A, BB, BBB, 8
A, CC, BBB, 7
A, AA, CCC, 9
A, BB, CCC, 7
A, CC, CCC, 6
...
C, CC, CCC, 3

Возможно ли это с SQL?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы ищете CROSS JOIN:

select  
  t1.name as name1, 
  t2.name as name2, 
  t3.name as name3,
  t1.weight + t2.weight + t3.weight as weight
from table1 t1
cross join table2 t2
cross join table3 t3

Если ваш столбец weight может содержать значения null, вам понадобится функция coalesce, чтобы избежать получения null в качестве выводаи обрабатывать эти значения как 0 s:

select 
  t1.name as name1, 
  t2.name as name2, 
  t3.name as name3, 
  coalesce(t1.weight,0) + coalesce(t2.weight,0) + coalesce(t3.weight,0) as weight
from table1 t1
cross join table2 t2
cross join table3 t3
0 голосов
/ 18 января 2019

Возможно с перекрестным соединением

select 
  t1.name as name1, 
  t2.name as name2, 
  t3.name as name3, 
  t1.weight + t2.weight + t3.weight as weight
from table1 t1,
  table2 t2,
  table3 t3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...