Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Группировка альтернатив


Автор: tishaishii 25.5.2020, 08:25
Есть тупой и глупый вопрос.
Есть таблицы:
Код

t( id , drive_id , cartridge_id ) -- принтер и расходник
t_alt( t_id , t_alt_id ) /** список принтеров, в которые можно вставить расходиник
составлено так, что записи симметричны. То есть можно искать и найти и по t_id и по t_alt_id и найти одно и то же.
*/

t.id <->> t_alt.t_id


Необходимо составить запрос, чтобы возвращал для каждого картриджа подходящие принтеры без подзапросов.
С учётом того для для каждого t.id в t_alt  может не найтись t_alt.id.

То есть, вывод, если вам понятна нотация:
result( cartridge_id , group_concat( printer_id ) )

Автор: tishaishii 25.5.2020, 18:49
Ааа. В общем, пока вас дождёшься.
Самое простое - выполнил:
Код

INSERT IGNORE INTO `t_alt`( `t_id` , `t_alt_id` )
SELECT
        `ta1`.`t_alt_id` ,
        `ta1`.`t_id`
FROM
        `t_alt` AS `ta1`
UNION DISTINCT
SELECT
        `ta1`.`t_id` ,
        `ta1`.`t_id`
FROM
        `t_alt` AS `ta1`;

И вполне стали работать альтернативы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)