Поиск GROUP_CONCAT с использованием LIKE - PullRequest
6 голосов
/ 27 сентября 2010

У меня есть SQL-запрос, который использует GROUP_CONCAT, чтобы связать всех людей с определенным заказом. Можно ли выполнить поиск в поле GROUP_CONCAT?

SELECT orders.orderID, 
GROUP_CONCAT(contacts.firstName, " ", contacts.lastName) AS attachedContacts
FROM (orders)
JOIN contacts ON orders.contactID=contacts.contactID
GROUP BY orders.orderID
ORDER BY orders.orderID DESC

Я хочу добавить что-то вроде WHERE attachedContacts LIKE '%Eric%', чтобы отображать только заказы с присоединенным «Эриком», но все равно включать в запрос все другие контакты.

Запрос возвращает данные как:

orderID atachedContacts
01      Eric Siegel, John Smith
02      Jason Jackson, Bill O'Neil
03      Eric Siegel, Jason Jackson, Neil O'Ryan

Я хочу, чтобы запрос возвращал строки 01 и 03, потому что в списке контактов есть «Эрик».

Как я могу это сделать?

1 Ответ

15 голосов
/ 27 сентября 2010

Попробуйте это:

SELECT orders.orderID, 
GROUP_CONCAT(contacts.firstName, " ", contacts.lastName) AS attachedContacts
FROM orders
JOIN contacts ON orders.contactID=contacts.contactID
GROUP BY orders.orderID DESC
HAVING attachedContacts LIKE '%Eric%'
...