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

SQL Consulta complicada

Estas en el tema de SQL Consulta complicada en el foro de Bases de Datos General en Foros del Web. Que tal.... Necesito realizar una consulta pero no logro descifrar como... Ej: ID Vinc1 Vinc2 Vincu3 Vinc4 Vinc5 1 esposa hija hermana 2 madre 3 ...
  #1 (permalink)  
Antiguo 09/04/2008, 19:56
Avatar de mauro_bernal_rios  
Fecha de Ingreso: abril-2008
Ubicación: Mendoza
Mensajes: 88
Antigüedad: 16 años, 7 meses
Puntos: 2
SQL Consulta complicada

Que tal....
Necesito realizar una consulta pero no logro descifrar como...

Ej:
ID Vinc1 Vinc2 Vincu3 Vinc4 Vinc5
1 esposa hija hermana
2 madre
3 hermana esposa
4
5




Necesito relizar una consulta de la tabla anterior en la cual tengo que obtener una nueva tabla en la cual solo hay dos columna que indique el total por id de filas que estan ocupadas con algun vinculo.

Resultado Deseado:
id totales
1 3
2 1
3 2
4 0
5 0

Desde ya muchas gracias...
  #2 (permalink)  
Antiguo 09/04/2008, 22:02
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 10 meses
Puntos: 7
Re: SQL Consulta complicada

¿Y eso no significa que la base de datos está mal diseñada? Efectivamente.

Las tablas deberían ser como estas:


tabla1 (ID)
tabla2 (ID, vinculo) //tabla de relación...

Y la consulta sería:

SELECT id, count(*)
FROM tabla1 t1, tabla2 t2
WHERE t1.id = t2.id
GROUP BY t1.id


Espero sirva.
  #3 (permalink)  
Antiguo 10/04/2008, 01:19
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Re: SQL Consulta complicada

Vale, Adolfiten estoy contigo en que el diseño no es correcto, pero la consulta que le das no le resuelve el problema.

Mauro esto no una "Consulta complicada"

SQL Consulta complicada
Que tal....
Necesito realizar una consulta pero no logro descifrar como...

select id, count(Vinc1)+ count(Vinc2)+ count(Vinc3)+ count(Vinc4)+ count(Vinc5) as totales
from tabla
group by id -- Solo si id no es PK y se puede repetir, en caso contrario no surte efecto

Salu2
  #4 (permalink)  
Antiguo 10/04/2008, 19:38
Avatar de mauro_bernal_rios  
Fecha de Ingreso: abril-2008
Ubicación: Mendoza
Mensajes: 88
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: SQL Consulta complicada

De eso estamos de acuerdo. Pasa que cuando llegué ya estaba hecho así. Estoy realizando las tareas de backoficce de una empresa de venta. Y estoy poniendo un poco de orden. La idea de todo esto es exportar un informe en excel que se envia al proveedor.

En el informe solo tiene que ir la cantidad de adicionales que se han vendido por ventas. Y en la tabla que me pasan vienen con esas columnas. Entonces tendría que de alguna forma obtener en una nueva columna la cantidad de columnas que estan ocupadas....

Si pueden ayudarme sería útil....
Gracias...
  #5 (permalink)  
Antiguo 11/04/2008, 06:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Re: SQL Consulta complicada

Código:
SELECT ID, IF(ISNULL(VINC1),0,1) 
         + IF(ISNULL(VINC2),0,1) 
         + IF(ISNULL(VINC3),0,1) 
         + IF(ISNULL(VINC4),0,1) 
         + IF(ISNULL(VINC5),0,1) as Vinculos 
       FROM tablaX;
No estoy seguro de si tiene que ser ISNULL(nombre campo) o nombre campo IS NULL

Esto te dara para cada ID el numero de campos que no son nulos... entiendo que tienes un numero finito (conocido) de campos VINC.

Quim
  #6 (permalink)  
Antiguo 11/04/2008, 22:46
Avatar de mauro_bernal_rios  
Fecha de Ingreso: abril-2008
Ubicación: Mendoza
Mensajes: 88
Antigüedad: 16 años, 7 meses
Puntos: 2
Re: SQL Consulta complicada

En una sola palabra:....PERFECTO.....

Es lo que quería hacer pero no sabía como....
Aún no lo pruebo pero esa es la idea...Y creo que no voy a tener ningun inconveniente.....
Muchas Gracias...

Quim[/QUOTE]
  #7 (permalink)  
Antiguo 12/04/2008, 04:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Re: SQL Consulta complicada

ya te di la repusta más arriba......
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 23:11.