У меня есть запрос к базе данных в PHP, похожий на:
SELECT * FROM ($myQuery) AS myDerivedTable
JOIN ( SELECT COUNT(*) FROM myDerivedTable WHERE criteriaA ) AS A
JOIN ( SELECT COUNT(*) FROM myDerivedTable WHERE criteriaB ) AS B
JOIN ( SELECT COUNT(*) FROM myDerivedTable WHERE criteriaC ) AS C
...
Пока предположим, что $myQuery
содержит следующее:
SELECT * FROM table1 ORDER BY dateOfSubmition DESC
Я просто хочу использовать производную таблицу (myDerivedTable
) снова и снова вместо того, чтобы вычислять это каждый раз! Но MySQL сообщает об ошибке:
#1146 - Table 'myDB.myDerivedTable' doesn't exist
Конечно это не существует! От myDerivedTable
Я не хотел упоминать существующую таблицу в базе данных, а просто ссылку на уже рассчитанную таблицу !!
Как я могу добиться желаемого поведения?
Вот еще один способ использования условной агрегации для подсчета различных критериев
SELECT
COUNT(CASE WHEN criteriaA THEN 1 END) AS A
COUNT(CASE WHEN criteriaB THEN 1 END) AS B
COUNT(CASE WHEN criteriaC THEN 1 END) AS C
FROM ($myQuery) AS myDerivedTable
Пожалуйста, обратитесь ниже, это может помочь вам.