Предположим, у меня есть эти две таблицы:Фильтр MySQL по столбцу в нескольких строках?
|Customers | |Purchases |
---------------- -----------------
|CusID |----- |PurchaseID |
|CusName | |---<|CusID |
|CusAge | |ItemName |
|CusDateAdded | |DatePurchased |
Я необходимости фильтровать мой результат, установленный несколькими ItemNames. Скажем, я хочу вернуть всех Клиентов, которые находятся в возрасте от 18 до 24 лет, которые купили «камеру» и «телефон». Я могу выполнить следующий запрос, чтобы получить все записи для клиентов между возрастным диапазоном:
SELECT CusID
FROM Customers AS C
JOIN Purchases AS P
ON C.CusID = P.CusID
WHERE C.CusAge BETWEEN 18 AND 24
Однако, когда приходит время для фильтрации на колонке ITEMNAME в таблице Приобретения, как это делает один фильтр на нескольких строках? Предположим, что это возможно без нескольких запросов?
Я мог бы смотреть на это так, пожалуйста, поправьте меня, если я, но что, если клиент имел больше покупок, чем просто «камеры» и 'Телефон'. Скажем, они также приобрели «рубашку» и «шляпу», что сделало бы их общую запись в таблице «Покупки» равной 4. Так как меня волнует только «камера» и «телефон», когда я запускаю счет HAVING (отличное ItemName) = 2 , это пропустит клиент, который купил камеру и телефон, а также другие предметы? – commanderZiltoid
Но в предложении 'where' вы смотрите только' AND ItemName IN ('camera', 'phone') '. Так что неважно, есть ли другие –
Вы, безусловно, правы. Работает как шарм! – commanderZiltoid