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

Problema Con Select

Estas en el tema de Problema Con Select en el foro de SQL Server en Foros del Web. mi problema es el siguiente: yo tengo una tabla problema y un tabla usuario en la Problema problema_id------ problema------- responsable----tpo_estimado-----priv 0-------- ----------pc-------------01---------------12------------Admin 1------------------mouse----------01---------------4------------Admin 2------------------teclado---------02----------------5------------Respo Usuario ...
  #1 (permalink)  
Antiguo 06/11/2006, 11:14
 
Fecha de Ingreso: abril-2006
Mensajes: 100
Antigüedad: 18 años
Puntos: 0
Problema Con Select

mi problema es el siguiente: yo tengo una tabla problema y un tabla usuario en la
Problema
problema_id------ problema------- responsable----tpo_estimado-----priv
0-------- ----------pc-------------01---------------12------------Admin
1------------------mouse----------01---------------4------------Admin
2------------------teclado---------02----------------5------------Respo

Usuario
usuario_id------ nombre
01-------lucas
02-------juan

lo q yo necesito es realizar un select q me extraiga los usuario q sean responsable y admin y ademas que me mustre le tiempo estimado de cada uno de ellos.
yo tengo este select pero no me muestra los valores bien, solo muestra los usuarios q ya se les asignado anteriromente un problema, si yo tengo un suario y no le he aignado problema no me lo muestra :

SELECT SUM(Problema.Tpo_Estimado) AS t, Usuario.Nombre as nom
FROM Problema,Usuario
where Problema.Responsable = Usuario.UsuarioID
GROUP BY Usuario.Nombre


espero q me puedan ayudar.
GRACIAS

Última edición por kelly83; 06/11/2006 a las 14:25
  #2 (permalink)  
Antiguo 07/11/2006, 03:02
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Es que no se puede calcular si no tienen problemas asignados. Ten en cuenta que si no tiene un problema asignado no existe en la tabla problemas que es donde tienes el tiempo y el perfil de admin o responsable.

Para poder saber que tipo de usuario es, independientemente de los problemas, el perfil deberia estar en la tabla usuarios y no en la otra, claro que eso si un mismo usuario no pudiera tner distintos perfiles para distintos problemas. Eso si, el tiempo depende de los problemas asi que solo sacaria un valor > 0 si hubiera problemas asignados... En ese caso seria asi...

SELECT SUM(isnull(Problema.Tpo_Estimado, 0)) AS t, Usuario.Nombre as nom, Usuario.Perfil
FROM Usuario
left join Problema on Problema.Responsable = Usuario.UsuarioID
GROUP BY Usuario.Nombre

(al hacer left join la select da resultados tanto si existen problemas asociados como si no, si quitas el left y solo haces join solo sacaria los valores que tienen problemas asociados)
  #3 (permalink)  
Antiguo 07/11/2006, 10:41
 
Fecha de Ingreso: abril-2006
Mensajes: 100
Antigüedad: 18 años
Puntos: 0
fue un error en la tabla usuario yo tengo los privelegios
  #4 (permalink)  
Antiguo 09/11/2006, 16:09
 
Fecha de Ingreso: abril-2006
Mensajes: 100
Antigüedad: 18 años
Puntos: 0
el select no esta funcionandop bien me esta mostrando todos los tipo de usuario y solo necesito que me muestra 2 administrador o responsable
  #5 (permalink)  
Antiguo 09/11/2006, 18:26
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
solo hay que agregar la condicion para que seleccione solo esos perfiles...
clausula where

Código:
SELECT  u.Nombre
       ,u.Perfil
       ,sum(isnull(p.Tpo_Estimado, 0)) Estimado,  
FROM    Usuario u 
left join 
        problema u
On      u.usuarioId =  p.responsable 
Where   u.perfil in ('Admin', 'Respo')
GROUP BY 
        u.Nombre
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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:50.