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

Como hago esta consulta... mostrar varios usuarios

Estas en el tema de Como hago esta consulta... mostrar varios usuarios en el foro de SQL Server en Foros del Web. Buenas, Me gustaría saber si esto es posible: Tengo la siguiente consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código sql: Ver original SELECT     id_incidencia , id_client , ...
  #1 (permalink)  
Antiguo 10/12/2009, 06:54
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Como hago esta consulta... mostrar varios usuarios

Buenas,

Me gustaría saber si esto es posible:

Tengo la siguiente consulta

Código sql:
Ver original
  1. SELECT     id_incidencia, id_client, identificador, data_incidencia, oberta_per, temps_inici, solucionada_per, data_solucio
  2. FROM         NSG_INCIDENCIES_CLIENT
  3. WHERE     (MONTH(data_incidencia) LIKE '12') AND (YEAR(data_incidencia) LIKE '2009') AND (solucionada_per = 12571)

Y con esto de aquí saco por ej. el numero de incidencias solucionadas por un empleado concreto

Código sql:
Ver original
  1. SELECT     COUNT(*) AS cerradas
  2. FROM         NSG_INCIDENCIES_CLIENT
  3. WHERE     (MONTH(data_incidencia) LIKE '12') AND (YEAR(data_incidencia) LIKE '2009') AND (solucionada_per = 12571)

Me gustaría sacar lo mismo pero para todos los empleados, ¿de que forma puedo realizar la consulta?

La idea es conseguir una tabla parecida a esta

id_empleado | cerradas
12571 | 35
15235 | 20
12984 | 13
35812 | 29

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 10/12/2009, 08:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como hago esta consulta... mostrar varios usuarios

Si tu campo data_incidencia es del tipo datetime entonces asi es mejor:
Código sql:
Ver original
  1. SELECT    solucionada_per [id_empleado], COUNT(*) AS cerradas
  2. FROM      NSG_INCIDENCIES_CLIENT
  3. WHERE     MONTH(data_incidencia) = 12 AND YEAR(data_incidencia) = 2009
  4. GROUP BY solucionada_per
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 11/12/2009, 04:06
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Como hago esta consulta... mostrar varios usuarios

Cita:
Iniciado por flaviovich Ver Mensaje
Si tu campo data_incidencia es del tipo datetime entonces asi es mejor:
Código sql:
Ver original
  1. SELECT    solucionada_per [id_empleado], COUNT(*) AS cerradas
  2. FROM      NSG_INCIDENCIES_CLIENT
  3. WHERE     MONTH(data_incidencia) = 12 AND YEAR(data_incidencia) = 2009
  4. GROUP BY solucionada_per
Muchas gracias, funcionó!

8033 3
11657 15
11659 8
11955 7
12146 4
12343 2
12404 17
12571 26
12592 5
12793 30
13637 3
13904 1
14013 9

Sin embargo, no me gustaría que me mostrase toda la lista de usuarios, sino solo los 4 o 5 que yo especifique, se puede hacer?

Intenté agregar el AND (id_empleado = 11657) en la clausula WHERE pero me arrojo error

No puedo indicarselo en el WHERE los identificadores de los usuarios?

Gracias de antemano!
  #4 (permalink)  
Antiguo 11/12/2009, 08:27
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como hago esta consulta... mostrar varios usuarios

Usa:
Código SQL:
Ver original
  1. AND id_empleado IN (11657,X,Y,Z)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 11/12/2009, 09:17
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Como hago esta consulta... mostrar varios usuarios

Cita:
Iniciado por flaviovich Ver Mensaje
Usa:
Código SQL:
Ver original
  1. AND id_empleado IN (11657,X,Y,Z)
Mil gracias flaviovich, conseguí mostrar solo los empleados de la lista.
Sin embargo, aparece su ID de empleado, debería poder mostrar los nombres de los empleados que están en la tabla empleados

SELECT solucionada_per AS id_empleado, COUNT(*) AS cerradas
FROM NSG_INCIDENCIES_CLIENT
WHERE (MONTH(data_incidencia) = 12) AND (YEAR(data_incidencia) = 2009) AND (solucionada_per IN (11657, 12571, 12793, 14028, 12343))
GROUP BY solucionada_per

11657 16
12343 2
12571 29
12793 35
14028 5


SELECT id_empleat, id_nombre
FROM NSG_EMPLEATS
WHERE (id_empleat IN (11657, 12571, 12793, 14028, 12343))

11657 juan
12343 pepito
12571 pablo
12793 emma
14028 julia

Cómo podría relacionarlo para que el resultado quede legible? Ej.

juan 16
pepito 2
pablo 29
emma 35
julia 5


Muchas gracias de antemano!
  #6 (permalink)  
Antiguo 11/12/2009, 09:37
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como hago esta consulta... mostrar varios usuarios

Tienes que usar un INNER JOIN.
Esta vez tienes que hacerlo tu mismo.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 11/12/2009, 11:02
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Como hago esta consulta... mostrar varios usuarios

Cita:
Iniciado por flaviovich Ver Mensaje
Tienes que usar un INNER JOIN.
Esta vez tienes que hacerlo tu mismo.
Suerte!
Créeme que lo intenté pero no hay manera que me valide la sintaxis y la filosofía es esta no?

Código SQL:
Ver original
  1. SELECT t1.clienteid, t2.TotalVentas
  2. FROM cliente t1 INNER JOIN ventas t2 ON t1.idcliente = t2.idcliente


Código SQL:
Ver original
  1. SELECT id_nombre,solucionada_per
  2. FROM NSG_EMPLEATS INNER JOIN NSG_INCIDENCIES_CLIENT ON (id_nombre = solucionada_per)

Muchas gracias de antemano!
  #8 (permalink)  
Antiguo 11/12/2009, 11:04
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Como hago esta consulta... mostrar varios usuarios

Efectivamente esa es la sintaxis.
Te da algun error?
Te recomiendo usar alias como el ejemplo que pusiste.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 15/12/2009, 05:32
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Como hago esta consulta... mostrar varios usuarios

Cita:
Iniciado por flaviovich Ver Mensaje
Efectivamente esa es la sintaxis.
Te da algun error?
Te recomiendo usar alias como el ejemplo que pusiste.
El error que me arroja es

Syntax error converting the nvarchar value "abelen" to a column of data type int

He probado hacer el select así, pero me dice lo mismo

SELECT CAST( id_nombre AS VARCHAR(15)) AS nombre, solucionada_per FROM ....

¿Por qué no funciona?

Muchas gracias de antemano!
  #10 (permalink)  
Antiguo 15/12/2009, 05:35
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Como hago esta consulta... mostrar varios usuarios

Cita:
Iniciado por neodani Ver Mensaje
El error que me arroja es

Syntax error converting the nvarchar value "abelen" to a column of data type int

He probado hacer el select así, pero me dice lo mismo

SELECT CAST( id_nombre AS VARCHAR(15)) AS nombre, solucionada_per FROM ....

¿Por qué no funciona?

Muchas gracias de antemano!
Conseguido, lo que estaba haciendo mal era la comparación

#
FROM NSG_EMPLEATS INNER JOIN NSG_INCIDENCIES_CLIENT ON (id_nombre = solucionada_per)

Muchas gracias!
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 18:54.