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

count sobre where´s diferentes

Estas en el tema de count sobre where´s diferentes en el foro de Bases de Datos General en Foros del Web. hola querria saber si esto se puede hacer Tengo una consulta por ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT Idpersona , COUNT ( * ...
  #1 (permalink)  
Antiguo 15/11/2015, 08:08
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
count sobre where´s diferentes

hola querria saber si esto se puede hacer

Tengo una consulta por ejemplo:
Código SQL:
Ver original
  1. SELECT Idpersona, COUNT(*)
  2. FROM persona JOIN pedido ON persona.id=pedido.idper
  3. WHERE pedido.tipo=0;
  4. GROUP BY idPersona

tengo otra consulta que es igual pero:
Código SQL:
Ver original
  1. SELECT Idpersona, COUNT(*)
  2. FROM persona JOIN pedido ON persona.id=pedido.idper
  3. WHERE pedido.tipo=1
  4. GROUP BY idPersona

y otra:
Código SQL:
Ver original
  1. SELECT Idpersona, COUNT(*)
  2. FROM persona JOIN pedido ON persona.id=pedido.idper
  3. WHERE pedido.tipo=2;
  4. GROUP BY idPersona

hay alguna forma de hacerlo todo en una tal que asi?
IDpersona, count1, count2,count3



hace poco pregunte una cosa parecida y se me dio una solucion con un coun y sum(if) pero como no entiendo esa sintaxis pues no puedo utilizarlo porque no la entiendo, y no encuentro informacion de que es cada cosa.
Si seriais tan amables de indicarme aparte de la solucion una breve explicacion de que es cada cosa de esa estructura os lo agradecería !
Un saludo

Última edición por gnzsoloyo; 16/11/2015 a las 12:13
  #2 (permalink)  
Antiguo 16/11/2015, 09:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: count sobre where´s diferentes

sip, podrias hacer algo como esto:

Código SQL:
Ver original
  1. SELECT Idpersona, COUNT(*)
  2. FROM persona JOIN pedido ON persona.id=pedido.idper
  3. WHERE pedido.tipo=0;
  4. GROUP BY idPersona
  5. UNION
  6. SELECT Idpersona, COUNT(*)
  7. FROM persona JOIN pedido ON persona.id=pedido.idper
  8. WHERE pedido.tipo=1;
  9. GROUP BY idPersona
  10. UNION
  11. SELECT Idpersona, COUNT(*)
  12. FROM persona JOIN pedido ON persona.id=pedido.idper
  13. WHERE pedido.tipo=2;
  14. GROUP BY idPersona
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/11/2015, 12:07
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

pero eso no me sacara por cada persona:

ID, COUNT1, count2,count3
  #4 (permalink)  
Antiguo 16/11/2015, 12:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: count sobre where´s diferentes

Lo que estás intentando hacer es una consulta agrupada que al mismo tiempo te genere una tabla inversa.
Eso NO EXISTE en SQL.

Se pueden hacer subconsultas en el SELECT para lograr algo semejante, pero a la larga es ineficiente.
A mi entender necesitas herramientas de BI y DM para lograr lo que necesitas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/11/2015, 12:22
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo que estás intentando hacer es una consulta agrupada que al mismo tiempo te genere una tabla inversa.
Eso NO EXISTE en SQL.

Se pueden hacer subconsultas en el SELECT para lograr algo semejante, pero a la larga es ineficiente.
A mi entender necesitas herramientas de BI y DM para lograr lo que necesitas.
no podria hacer algo del palo a esto?
select campo1, (select count(campo1) from where etc...), (select count(campo1) form where etc...), (select count(campo1) form where etc...)
from tabla
where etc...
  #6 (permalink)  
Antiguo 16/11/2015, 12:23
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo que estás intentando hacer es una consulta agrupada que al mismo tiempo te genere una tabla inversa.
Eso NO EXISTE en SQL.

Se pueden hacer subconsultas en el SELECT para lograr algo semejante, pero a la larga es ineficiente.
A mi entender necesitas herramientas de BI y DM para lograr lo que necesitas.
no podria hacer algo del palo a esto?
Código MySQL:
Ver original
  1. SELECT idPersona, SUM(if(pedido.tipo=0,1,0)),SUM(if(pedido.tipo=1,1,0),SUM(if(pedido.tipo=2,1,0),
  2. FROM persona JOIN pedido ON persona.id=pedido.idper
  3. GROUP BY idPersona

o algo así?
Código SQL:
Ver original
  1. SELECT campo1, (SELECT COUNT(campo1) FROM WHERE etc...), (SELECT COUNT(campo1) form WHERE etc...), (SELECT COUNT(campo1) form WHERE etc...)
  2. FROM tabla
  3. WHERE etc...
[/CODE]

Muchas gracias por responder

Última edición por gnzsoloyo; 16/11/2015 a las 12:33
  #7 (permalink)  
Antiguo 16/11/2015, 12:24
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

eliminado........................
  #8 (permalink)  
Antiguo 16/11/2015, 12:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: count sobre where´s diferentes

El primer ejemplo, sólo aplica a MySQL. No sé si es el que estás usando, por otro lado, ese tipo de agrupamientos en tablas extensas, y con JOIN suele ser de muy baja performance.

El segundo ejemplo es el que te dije, pero adolece el problema de que posee PÉSIMA performance. Es simplemente una consulta basura.
No te la recomeindo.

Insisto, Las herramientas de BI y DM son la mejor opcion para lo que necesitas hacer.
Las consultas simples no son prácticas para sistemas de reporte mas o menos elaborados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 16/11/2015, 13:05
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

borrando........
  #10 (permalink)  
Antiguo 16/11/2015, 13:06
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El primer ejemplo, sólo aplica a MySQL. No sé si es el que estás usando, por otro lado, ese tipo de agrupamientos en tablas extensas, y con JOIN suele ser de muy baja performance.

El segundo ejemplo es el que te dije, pero adolece el problema de que posee PÉSIMA performance. Es simplemente una consulta basura.
No te la recomeindo.

Insisto, Las herramientas de BI y DM son la mejor opcion para lo que necesitas hacer.
Las consultas simples no son prácticas para sistemas de reporte mas o menos elaborados.

sip, uso mysql.

Es la primera vez que oigo eso de BY y DM. Yo el interes que tengo es para trabajar con .net en c#, y hago consultas para obtener informes... que me aconsejas entonces, que no utilice una consulta que me saque todo?

Pero si tengo que sacar esos datos como es la mejor manera o menos mala
  #11 (permalink)  
Antiguo 16/11/2015, 13:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: count sobre where´s diferentes

Supongo que ya lo sabrás:

BI: Bussiness Intelligence

DM: Data Minning (minería de datos)

Prueba:
https://www.cloud9charts.com/mysql

Mira:
http://opensource.com/business/14/6/...business-tools
http://www.jaspersoft.com/press/jasp...-isvoem-market
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 16/11/2015, 16:02
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: count sobre where´s diferentes

gracias le echare un ojo cuando tenga algo de tiempo :)

Etiquetas: count, 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 14:51.