Quiero contar tanto el número total de registros en una tabla como el número total de registros que coinciden con ciertas condiciones. Puedo hacer esto con dos consultas separadas:dos consultas SQL COUNT()?
SELECT COUNT(*) AS TotalCount FROM MyTable;
SELECT COUNT(*) AS QualifiedCount FROM MyTable
{possible JOIN(s) as well e.g. JOIN MyOtherTable mot ON MyTable.id=mot.id}
WHERE {conditions};
¿Hay una manera de combinar estos en una consulta para que consigo dos campos en una fila?
SELECT {something} AS TotalCount,
{something else} AS QualifiedCount
FROM MyTable {possible JOIN(s)} WHERE {some conditions}
Si no es así, puedo emitir dos consultas y se envuelven en una transacción para que sean coherentes, pero esperaba hacerlo con uno.
editar: Estoy más preocupado por la atomicidad; si hay dos instrucciones sub-SELECT necesarias, eso está bien, siempre y cuando haya un INSERT proveniente de alguna parte, las dos respuestas no sean inconsistentes.
edit 2: Las respuestas de CASE son útiles pero en mi caso específico, las condiciones pueden incluir un JOIN con otra tabla (olvidé mencionar eso en mi publicación original, lo siento) así que supongo que ese enfoque no funcionará .
¿Qué tipo de base de datos está utilizando? – Andomar
MySQL, pero me gustaría saberlo en general si es bastante sencillo –
Relacionado pero no con la solución: también puede usar para obtener los recuentos de tablas más grandes. SELECCIONAR SQL_CALC_FOUND_ROWSFROM MyTable; SELECCIONE FOUND_ROWS(); SELECCIONAR SQL_CALC_FOUND_ROWSFROM MyTable DONDE {condiciones}; SELECCIONE FOUND_ROWS(); –