я в настоящее время имеют следующие таблицы с:Упростить мой MySQL запрос
TABLE klusbonnen_deelnemers:
bonnummer (varchar) - order number
adres (varchar) - order adres
deelnemer (varchar) - user
binnen (date) - date order received
klaar (date) - original order milestone
datum_gereed (date) - date order completed
gereed (varchar) - YES or NO (YES= completed NO= Not yet completed)
datum_factuur (date) - date when user marked order completed (button clicked)
factuur (varchar) - weeknumber order completed
Один заказ (bonnummer) может иметь несколько пользователей (deelnemer), которые все должны пометить заказ «заполненный» (datum_gereed). Только когда ВСЕ пользователи (deelnemer) отметили заказ (bonnummer) «завершен» (datum_gereed), заказ «завершен». Я пытаюсь написать запрос, который дает мне: Все выполненные заказы (bonnummer) в заданный промежуток времени (в прошлом месяце). Однако ... Дата завершения (datum_gereed) должна содержать дату LAST (так как это фактическая общая дата завершения). Список должен иметь заказ (bonnummer) с самой последней «отмеченной завершенной» датой (datum_factuur) сверху (sort DESC) (конечно, только когда все пользователи (deelnemer) выполнили заказ (все пользователи (deelnemers), имеющие gereed = «ДА»)
до сих пор у меня есть это:
SELECT DISTINCT tbl1.bonnummer AS 'KLUSBONNUMMER', tbl1.adres AS 'ADRES',
tbl1.binnen AS 'BINNENGEKOMEN OP', tbl1.klaar AS 'ORIGINELE STREEFDATUM',
tbl1.datum_gereed AS 'GEREEDGEKOMEN OP', tbl1.factuur AS 'WEEKNUMMER'
FROM klusbonnen_deelnemers AS tbl1
INNER JOIN
(SELECT tbl2.bonnummer
FROM klusbonnen_deelnemers AS tbl2
WHERE tbl2.bonnummer NOT IN (
SELECT tbl3.bonnummer
FROM klusbonnen_deelnemers AS tbl3
WHERE tbl3.gereed = 'NEE')
) AS tbl4 ON tbl1.bonnummer = tbl4.bonnummer
INNER JOIN
(SELECT bonnummer, MAX(datum_gereed) AS 'MAXDATUM'
FROM klusbonnen_deelnemers
GROUP BY bonnummer
) MAXFILTER ON tbl1.bonnummer = MAXFILTER.bonnummer
AND tbl1.datum_gereed = MAXFILTER.MAXDATUM
WHERE tbl1.datum_factuur BETWEEN NOW() - INTERVAL 2 MONTH AND NOW()
ORDER BY tbl1.bonnummer DESC
Этот запрос работает, однако я думаю, что это может быть сделано намного более простым способом на вершине, что запрос работает только в моей. Редактор navicat. Вызов этого запроса на моем «живом» веб-сайте дает ошибку (подзапрос в предложении WHERE ...) (у меня все правильные логины, так как другие запросы DO работают).
Кто-нибудь, кто может помочь (упростить) этот запрос? Thx ...
'не в' может быть опасно с допустимостью пустым. подумайте «не существует» – Drew
Откуда вы знаете, сколько людей было связано с проектом ... чтобы вы знали, сколько одобрений нужно искать? У всех заказов есть одинаковое количество людей, одобряющих или все заказы по умолчанию имеют нет для всех пользователей, пока они, наконец, не одобрят? –
Число людей, связанных с проектом, варьируется. Когда они назначаются в проект, новая строка добавляется для каждого пользователя, не выполняющего никаких действий. – user2960829