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

Sacar 2 columnas de la misma tabla con diferente valor

Estas en el tema de Sacar 2 columnas de la misma tabla con diferente valor en el foro de Mysql en Foros del Web. Buenas, pues estoy intentando hacer que me devuelva esto: ------------------------------ |Sector|Todos|Abiertos| ------------------------------ |1 | 320 | 150 | |2 | 230 | 20 | ... ...
  #1 (permalink)  
Antiguo 21/05/2009, 04:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Sacar 2 columnas de la misma tabla con diferente valor

Buenas, pues estoy intentando hacer que me devuelva esto:

------------------------------
|Sector|Todos|Abiertos|
------------------------------
|1 | 320 | 150 |
|2 | 230 | 20 |
...
...
------------------------------

la consulta que tengo es:

Código HTML:
SELECT sector, count(*),
(select count(*) from contador where limiteagua>1 group by sector) as abiertos
from contador
group by sector
me devuelve:

#1242 - Subquery returns more than 1 row
ya lo he intentando de mil maneras distintas y no he podido hacer nada..
alguien sabe como se podria hacer? :$
  #2 (permalink)  
Antiguo 21/05/2009, 05:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Sacar 2 columnas de la misma tabla con diferente valor

Y has probado algo así:
Código sql:
Ver original
  1. SELECT
  2.     Sector,
  3.     COUNT(*) `Total sectores`,
  4.     COUNT(limiteagua) Abiertos
  5. FROM contador
  6. WHERE limiteagua>1
  7. GROUP BY Sector;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/05/2009, 05:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sacar 2 columnas de la misma tabla con diferente valor

No sé si habré entendido bien,

Código sql:
Ver original
  1. SELECT Sector, COUNT(*) todos, SUM(IF(limiteagua > 1,1,0)) abiertos FROM contador GROUP BY sector
  #4 (permalink)  
Antiguo 21/05/2009, 06:27
 
Fecha de Ingreso: diciembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Sacar 2 columnas de la misma tabla con diferente valor

Buenas,
gnzsoloyo tu consulta me devuelve las 2 columnas los mismos resultados(los abiertos en total)
jurena la tuya si que ha funcionado! :D

Gracias!
  #5 (permalink)  
Antiguo 21/05/2009, 09:37
 
Fecha de Ingreso: diciembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Sacar 2 columnas de la misma tabla con diferente valor

Cita:
Iniciado por jurena Ver Mensaje
No sé si habré entendido bien,

Código sql:
Ver original
  1. SELECT Sector, COUNT(*) todos, SUM(IF(limiteagua > 1,1,0)) abiertos FROM contador GROUP BY sector
me podrias explicar un poco el tema de: SUM(IF(limiteagua > 1,1,0)) ?
gracias
  #6 (permalink)  
Antiguo 21/05/2009, 10:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sacar 2 columnas de la misma tabla con diferente valor

Agrupamos por sector para saber el total por sector y el parcial de cada sector cuyo limiteagua es superior a 1, todo ello en una sola consulta. Obtenemos el total, es decir, todos, con count(*), y el parcial para cada sector mediante una suma de valores, suma en la que el valor sumado por sector a cada registro es 1 cuando supera a 1 limiteagua, y 0 cuando no es así.
Si tienes 4 registros del sector primero, y el 2 y el 4 tienen un limiteagua mayor que 1, lo que hace el sum(if...) es que asigna 1 al 2 y al 4, y 0 al 1 y al 3, lo que sumado da 2 para ese sector primero. El count(*) seguiría ofreciendo el total, pues el count suma uno por cada registro del grupo.
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 19:30.