PDA

Ver la Versión Completa : Ayuda con consulta SQL


tgsistemas
17-02-2004, 13:38:58
Saludos a tod@s :

Solicito ayuda con una consulta de SQL ya que soy novato con SQL Server. :(
Partiendo de dos tablas (Trabajadores y Servicios) quiero hacer una consulta que muestre los trabajadores activos que no están incluidos en ningún servicio.
El query que he probado es este :
SELECT DISTINCT T.CDGO, T.NMBRECMPLTO
FROM TRBJDRES T, SERVICIOS S
WHERE (T.CDGO <> S.CDGOTOP AND T.ACTIVO = -1)
ORDER BY T.CDGO

Pero no funciona correctamente ya que me muestra todos los trabajadores (incluso los que ya estan en algún servicio).

Espero que alguien pueda ayudarme.

Saludos a tod@s.

delphi.com.ar
17-02-2004, 14:07:33
No funciona porque estas relacionando las tablas...
SELECT DISTINCT T.CDGO, T.NMBRECMPLTO
FROM TRBJDRES T
WHERE T.ACTIVO = -1
AND NOT EXISTS (SELECT 1 FROM SERVICIOS S WHERE T.CDGO = S.CDGOTOP)
ORDER BY T.CDGO

Saludos!

tgsistemas
17-02-2004, 16:48:58
Gracias delphi.com.ar !!!!

Es exactamente lo que necesitaba...
lo he probado y funciona perfectamente.

Gracias y saludos.

P.D.: Por mi parte ya se puede cerrar este hilo, es necesario hacer algo para cerrarlo o se deja tal cual?

tgsistemas
18-02-2004, 15:22:53
Hola delphi.com.ar :

El script que me facilitastes funciona perfectamente :

No funciona porque estas relacionando las tablas...
SELECT DISTINCT T.CDGO, T.NMBRECMPLTO
FROM TRBJDRES T
WHERE T.ACTIVO = -1
AND NOT EXISTS (SELECT 1 FROM SERVICIOS S WHERE T.CDGO = S.CDGOTOP)
ORDER BY T.CDGO

Saludos!

pero ahora me piden exactamente la misma consulta pero agrupada por otro campo (S.NMROORDEN), he intentado añadirlo a la consulta que me facilitastes, pero no funciona.

Agradeceria me indicaras alguna pista de como hacerlo.

Saludos.

delphi.com.ar
18-02-2004, 15:29:06
No entiendo que quieres decir con "agrupada por otro campo (S.NMROORDEN)"

tgsistemas
18-02-2004, 15:34:30
Me explico mejor...

A la consulta original :

SELECT DISTINCT T.CDGO, T.NMBRECMPLTO
FROM TRBJDRES T
WHERE T.ACTIVO = -1
AND NOT EXISTS (SELECT 1 FROM SERVICIOS S WHERE T.CDGO = S.CDGOTOP)
ORDER BY T.CDGO

tengo que añadir un campo (NMROORDEN) que pertenece a la tabla Servicios (S) y mostrar los resultados de la consulta agrupados por ese campo "Group by S.NMROORDEN".

Gracias por tu ayuda...

roman
18-02-2004, 15:40:35
tgsistemas
Mencionas que eres novato en sql. Quizá te interese leerte algún tutorial básico como por ejemplo este (http://www.w3schools.com/sql/default.asp). No hay nada como tener una idea general para no atorarnos tanto.

// Saludos

delphi.com.ar
18-02-2004, 15:55:55
Incisto con lo que te ha dicho Román, te recomiendo aprender SQL, al menos las nociones bácicas. Es muy fácil.
Por otro lado, quieres mostrar un campo de la tabla SERVICIOS cuando la consulta son todos aquellos trabajadores que no esten en esta tabla... ¡No es lógico!

tgsistemas
18-02-2004, 16:10:23
perdón !!!!! :o

me he equivocado de query :(

La consulta que me facilitastes la utilizo en otro query para mostrar todos los servicios que tiene asignado el usuario conectado al programa y es en esta consulta donde debo agrupar los datos por el NMROORDEN, diferentes servicios pueden tener el mismo NMROORDEN y se trata de que el usuario los vea agrupados.

Independientemente de eso voy a seguir el consejo de roman y buscar algún manual de SQL, que libro me aconsejais al respecto?.

Pido disculpas por el error !!!

Saludos y gracias a roman y delphi.com.ar !!

roman
18-02-2004, 16:14:07
Independientemente de eso voy a seguir el consejo de roman y buscar algún manual de SQL, que libro me aconsejais al respecto?.


Insisto en el enlace que te puse o algún otro que encuentres con Google (http://www.google.com.mx/search?q=sql+tutorials&ie=UTF-8&oe=UTF-8&hl=es&meta=). No busques un libro, no ahora. En mi opinión lo mejor es algo sencillo que en una tarde nos de un panorama general de cómo funciona.

// Saludos