У меня есть таблица сотрудников и их расписание, как так:MySQL запросов для всех поисковых терминов в индексе
Emp_Name | Date
-------- -----
Smith | 08-01-2009
Jones | 08-01-2009
Goodman | 08-02-2009
Smith | 08-02-2009
Jones | 08-02-2009
Goodman | 08-03-2009
Как бы написать запрос так, чтобы результаты были только имена сотрудников сотрудников, работающих на 08-02-2009
и 08-03-2009
.
Я догоняю, потому что все, что я могу придумать, это способы получить имена для соответствия EITHER, но я не могу найти правильный способ получить результаты только для имен, имеющих совпадения для всех критерии поиска по нескольким строкам.
Так что, основываясь на условиях примера, я должен получить только Goodman. Но если я сделаю такой запрос, как WHERE Date IS (list of dates)
, я бы получил Goodman и Smith and Jones, так как Смит и Джонс работали 08-02-2009. Если я попытаюсь сделать какой-то JOIN, я бы не всегда получал равные столбцы, так как количество дней, в течение которых каждый сотрудник работает, является переменным.
Я думал, что Союз может быть путем, но я не всегда буду знать, как могут условия, которые кто-то ищет.
Не нужно выбирать счетчик, и вы можете использовать IN вместо OR, но я думаю, что это так же хорошо, как вы можете получить –
Я помещаю счет в вывод, поскольку я думал, что это проиллюстрирует, что происходит. Вы пишете об использовании IN, хотя, изменили его. –
Есть ли способ передать количество параметров поиска в качестве переменной в часть HAVING (вне сценариев, внешних по отношению к запросу)? Кстати, это действительно хорошо. – Anthony