Получить все возможные попарные сочетания значений столбца
существует таблица с номарами и названиями систем
create table mytesttable
(num int(3),
sysname varchar(2));
insert into mytesttable
(1,'AL'),
(2,'AG'),
(3,'TS'),
(4,'NB'),
(5,'PO'),
(6,'IK'),
(7,'SX')
Необходимо написать запрос, который должен выводить все возможные сочетания систем в виде
AL-AG
AG-TS
и так далее
Не могу понять, как сравнить строки и добавлять к предыдущей.
Ответы (2 шт):
Попробуй Select t1.sysname, t2.sysname from mytesttable t1, mytesttable t2 Вроде так должно вывести все комбинации.
Если надо ВСЕ сочетания, то
SELECT t1.sysname sysname1, t2.sysname sysname2
FROM mytesttable
CROSS JOIN mytesttable t2
WHERE t1.num <> t2.num
Если нужно только парно-уникальные (т.е. при наличии АА-ББ не возвращать обратное ББ-АА), то заменить оператор во WHERE с <> на >.
Если на таблицу не наложено требование уникальности sysname, и следует исключить дубликаты, то ещё добавить DISTINCT. Либо в запросе вместо копий таблицы использовать два DISTINCT-подзапроса.
Но самое главное - следует понимать, что количество выходных записей растёт квадратично от количества исходных записей. И при большом числе исходных записей результата можно просто не дождаться...