SQL - Consulta Funcionarios!

   
Vista:

Consulta Funcionarios!

Publicado por David (7 intervenciones) el 11/03/2011 00:44:54
Buenas tardes, un gran favor.

Tengo la siguiente tabla:
NOMBRE FUNCIONARIO |NUMERO TARJETA |EMPRESA
Elías Villamil |1111111111 |Elektra
Carlos Benjumea |2222222222 |Sony
Edwin Aguirre |3333333333 |Falabella

Si realizo la siguiente consulta:
SELECT V.FechaJornada AS "FECHA", V.CardNumber AS "TARJETA FUNCIONARIO", COUNT (V.CardNumber)AS "CANTIDAD", T.TituloNombre
FROM Validaciones201103 V, Titulos T
HERE (V.FechaJornada Between CONVERT(DATETIME, '2011-03-01 00:00:00', 102) AND CONVERT(DATETIME, '2011-03-01 00:00:00', 102)) AND (V.CodigoValidacion = 99) AND (V.Titulo IN (4,5,6,25,27,28,29,30)) AND V.Titulo = T.Titulo
GROUP BY V.FechaJornada, V.CardNumber, T.TituloNombre

Me lista la siguiente información:
FECHA |TARJETA FUNCIONARIO |CANTIDAD
2011-03-01 |1111111111 |20
2011-03-01 |3333333333 |14

Indicandome la cantidad de veces que utilizaron la tarjeta.

La pregunta es; Necesito que Carlos Benjumea que no utilizo la tarjeta para el 2011-03-01 aparezca con 0 en el campo CANTIDAD.
FECHA |TARJETA FUNCIONARIO |CANTIDAD
2011-03-01 |1111111111 |20
2011-03-01 |2222222222 |0
2011-03-01 |3333333333 |14

Es posible realizarlo.

Muchas gracias,

David.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta Funcionarios!

Publicado por Leonardo Josué (880 intervenciones) el 11/03/2011 16:12:56
Hola David:

lo que necesitas es hacer un LEFT JOIN o RIGTH JOIN entre tus tablas dependiendo de cómo acomodes tus tablas. Si no sabes cómo funcionan este tipo de uniones pregúntale a Santa Wikipedia:

http://es.wikipedia.org/wiki/Join

Lo único que tendrías que hacer es reemplazar los valores nulos que aparezcan por un cero. No mencionas qué Manejador de BD estás utilizando, pero harías uso de funciones como ISNULL para SQL Server, IFNULL para MySQL o NVL para oracle.

Finalmente, una recomendación: evitar hacer las uniones entre tus tablas listándolas con comas (,) en el FROM y haciendo las uniones en el WHERE, es decir

Evita esto:
FROM Validaciones201103 V, Titulos T
WHERE
V.Titulo = T.Titulo

Y Utiliza esto:
FROM Validaciones201103 V
INNER JOIN Titulos T ON V.Titulo = T.Titulo

El resultado es el mismo, pero el performance mejora infinitamente.

Haz algunas pruebas y nos comentas los resultados

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta Funcionarios!

Publicado por David (1 intervención) el 14/03/2011 02:56:09
Muy bien Leonardo, como siempre sus apreciaciones son muy tenidas en cuenta. Probare lo recomendado.


Muchas gracias….

David….
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar