SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.07.2017 07:08:36

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Условие для GROUP_CONCAT

Здравствуйте!

Столкнулся с проблемой, вот пример:
таблица t1
idt1    a     b
PRIMARY KEY (idt1)

таблица t2
idt2   id_t1   c_int (целые числа)
FOREIGN KEY (id_t1) REFERENCES t1(idt1)

Запрос типа:

SELECT idt1,a GROUP_CONCAT( distinct c_int) as group_c_int FROM t1
left join t2 on idt1=id_t1
WHERE 1 group by idt1 order by idt1 desc


И вот тут я зашел в тупик, как  наложить условие group_c_int LIKE '%8,23%', ведь оно формируется после запроса и where с ним не работает..

Первое что пришло в голову использовать TEMPORARY TABLE или запрос в запросе. Сам запрос большой используется около 20 left join и 30 колонок, что будет лучше? или есть какие то хитрые методы о которых я не знаю для таких условий?

Неактивен

 

#2 12.07.2017 08:36:34

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Условие для GROUP_CONCAT

попробуйте HAVING вместо WHERE.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 13.07.2017 07:25:56

Osi322
Участник
Зарегистрирован: 04.07.2014
Сообщений: 24

Re: Условие для GROUP_CONCAT

Спасибо большое! Я так и знал что то то должно быть для отбора группировки!
Так же заметил чтобы все корректно работал нужно добавить разделители

GROUP_CONCAT( distinct  '|',c_int,'|')

Без них, с условием 8,23 все что угодно идет
Пример:
18,23,124
8,234

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson