Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta sobre reducir dos querys(Select's) en uno solo

Estas en el tema de Consulta sobre reducir dos querys(Select's) en uno solo en el foro de Bases de Datos General en Foros del Web. Buenas, Tengo la siguiente duda, Resulta que tengo una tabla de usuarios: que tiene estos campos: id,nombre,apellido,activo Me gustaria saber si con una sola query ...
  #1 (permalink)  
Antiguo 26/01/2011, 20:27
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 2
Exclamación Consulta sobre reducir dos querys(Select's) en uno solo

Buenas,

Tengo la siguiente duda,

Resulta que tengo una tabla de usuarios:
que tiene estos campos:
id,nombre,apellido,activo

Me gustaria saber si con una sola query puedo obtener:

1- la cantidad total de usuarios(SELECT count(*) as cantidad_usuarios FROM usuarios)
2-la cantidad total de usuarios activos.(SELECT count(*) as cantidad_usuarios_activos FROM usuarios WHERE activo=1)

Osea, puedo obtener las dos cantidades con un solo SELECT?.si es asi Como seria la query?.

Desde ya muchas gracias por su tiempo!

Saludos!
  #2 (permalink)  
Antiguo 27/01/2011, 07:56
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Consulta sobre reducir dos querys(Select's) en uno solo

Una posible solucion que le encontre es esto:

SELECT COUNT(u.id) AS total, SUM(u.activo) AS activos,COUNT(u.id)-SUM(u.activo) AS noactivos FROM usuarios AS u
  #3 (permalink)  
Antiguo 27/01/2011, 09:04
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta sobre reducir dos querys(Select's) en uno solo

Hola rolfi, otra manera pudiera ser así:

Código SQL:
Ver original
  1. SELECT
  2. COUNT(*) AS total,
  3. SUM(activo) AS activos,
  4. SUM(CASE WHEN activo != 1 THEN 1 ELSE 0 END) AS noactivos
  5. FROM usuarios

Es cuestión de que revises el performance de cada consulta, para que elijas la más rápida. Hay otras opciones, como el usar IF en lugar de CASE, pero esta no aplica a todos los manejadores de BD.

Saludos.
Leo
  #4 (permalink)  
Antiguo 27/01/2011, 12:35
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Consulta sobre reducir dos querys(Select's) en uno solo

Gracias leonardo!

Ni sabia que se podia poner condicionales en la seleccion de columnas de un select.

Gracias de nuevo.

Etiquetas: select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:11.