2014-02-20 4 views
0

Я запутался со следующим вопросом - У меня есть две таблицы,как генерировать количество возможных комбинаций в SQL запросе

Table A (A1,A2,A3,A4) 
TABLE B (B1,B2,B3,B4,B5) 

Что будет запрос для получения всех возможных комбинаций из 2 строк из таблицы А и 3 строки таблицы B. Например - у меня может быть такая комбинация, как [A1,A2,B1,B2,B3],[A1,A1,B2,B3,B4] является законным. То есть Значения повторения в таблице разрешены там, где повторение значений в таблице B не допускается, то есть [A1,A2,B1,B1,B1] не допускается. Как мы можем написать SQL-запрос для этого? Спасибо всем заблаговременно.

+0

Какую базу вы используете? SQL Server или MySQL? –

ответ

3

Вы можете получить все комбинации, используя cross join. Таким образом, ваша цель состоит в том, чтобы отфильтровать этот объект в соответствии с условиями в таблице «b». Следующий запрос делает это с cross join и where раздел:

SELECT a1.value AS a1, 
     a2.value AS a2, 
     b1.value AS b1, 
     b2.value AS b2, 
     b3.value AS b3 
FROM tablea a1 
     CROSS JOIN tablea a2 
     CROSS JOIN tableb b1 
     CROSS JOIN tableb b2 
     CROSS JOIN tableb b3 
WHERE b1.value < b2.value 
     AND b2.value < b3.value; 

Чтобы избежать повторений, значение в TableB должны быть в порядке.

 Смежные вопросы

  • Нет связанных вопросов^_^