У меня есть рабочий запрос, который подсчитывает все различные значения из таблицы LDS, где STATUS = 'OK' И DATE> = '2012' И если есть несколько идентичных идентификаторов, тогда подсчитайте один с самой новой датой если этот идентификатор имеет статус «оК»:mysql query, inested where clauses
COUNT(DISTINCT lds1.ID) FROM LDS lds1 LEFT JOIN LDS lds2 ON lds1.ID = lds2.ID AND lds1.Date < lds2.Date AND lds1.Status = 'ok' WHERE lds1.Date >= '2012' AND lds1.Status = 'ok' AND lds2.ID IS NUL
мне теперь нужно добавить еще одно условие, чтобы быть правдой, прежде чем выше запрос выполняется: «рассматривать только идентификаторы, где STATUS = NULL AND DATE> = 2011». Исходный экземпляр ID с STATUS = NULL не должен учитываться в результатах; он просто определяет, следует ли даже рассматривать идентификатор.
Table LDS: ID | STATUS | DATE 1 | NULL | 2011 1 | ok | 2012 2 | bad | 2012 1 | bad | 2013 3 | NULL | 1999 3 | ok | 2012 4 | ok | 2012 5 | NULL | 2011 5 | ok | 2012 6 | NULL | 2012
Ожидаемый результат полного запроса: «5».
ОБНОВЛЕНИЕ:
Возможно, это может быть решено с помощью массивов?
1. возьмите все идентификаторы из таблицы LDS, где STATUS = NULL AND DATE> = 2011 и помещены в массив (результат: ID1, ID5, ID6)
2. Для каждого идентификатора в массиве проверьте все экземпляры в таблице и выберите один с наибольшей датой и STATUS IS NOT NULL (результат: ID1, ID5)
3. Посчитайте, сколько из них имеет статус = OK (результат: ID5)
привет Мустафа - возникла проблема с большими/меньшими знаками, которые интерпретируются в тегах html в моем исходном сообщении. это было «исправлено». – user1291842