Использование GROUP_CONCAT с FIND_IN_SET в предложении mysql WHERE - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть этот запрос, и я хочу получить данные о встрече из таблицы, используя электронную почту ученика, но он получает эту ошибку Unknown column 'stu' in 'where clause'

select a.*, GROUP_CONCAT(e.value) as stu FROM wp_ea_appointments a join
wp_ea_fields e on a.id = e.app_id WHERE a.date > DATE('2019-02-14') AND
FIND_IN_SET('jan@gmail.com' , stu ) GROUP BY a.id

любая идея будет оценена

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

FIND_IN_SET условие должно содержаться в операторе HAVING вместо WHERE, потому что вы хотите фильтровать данные после группировки

SELECT a.*, 
    GROUP_CONCAT(e.value) as stu 
FROM wp_ea_appointments a 
JOIN wp_ea_fields e ON a.id = e.app_id 
WHERE a.date > DATE('2019-02-14')
GROUP BY a.id
HAVING FIND_IN_SET('jan@gmail.com', stu) 
0 голосов
/ 14 февраля 2019

Используйте предложение HAVING, но правильно сформулируйте логику:

SELECT a.*, GROUP_CONCAT(e.value) as stu
FROM wp_ea_appointments a JOIN
     wp_ea_fields e 
     ON a.id = e.app_id
WHERE a.date > DATE('2019-02-14')
HAVING SUM( e.value = 'jan@gmail.com' ) > 0;

Нет причин использовать конкатенацию строк для проверки существования значения.Сравнение строк дороже и менее понятно.

0 голосов
/ 14 февраля 2019

Вы можете попробовать использовать подзапрос

select * from
(
select a.*, GROUP_CONCAT(e.value) as stu FROM wp_ea_appointments a join
wp_ea_fields e on a.id = e.app_id WHERE a.date > DATE('2019-02-14') 
GROUP BY a.id
)A where FIND_IN_SET('jan@gmail.com' , stu ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...