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

Duda en el WHERE

Estas en el tema de Duda en el WHERE en el foro de SQL Server en Foros del Web. Tengo una base de datos con las tablas Trabajadores, Oficina Un trabajador puede trabajar en varias oficinas (media jornada) Ahora bien, tengo una duda, si ...
  #1 (permalink)  
Antiguo 21/04/2010, 05:20
Avatar de Atorort  
Fecha de Ingreso: abril-2010
Ubicación: Valencia
Mensajes: 127
Antigüedad: 14 años
Puntos: 0
Duda en el WHERE

Tengo una base de datos con las tablas Trabajadores, Oficina

Un trabajador puede trabajar en varias oficinas (media jornada)

Ahora bien, tengo una duda, si quiero sacar que Trabajadores pertenecen a que oficina es fácil, pero ahora quiero obtener todas las oficinas y que me aparezcan a las que NO pertenece el trabajador

Ejemplo: Trabajador1 - Oficina1
Trabajador1 - Oficina2


Existen hasta 4 oficinas. Y quiero que el resultado de la consulta sea:
Oficina3
Oficina4


Hay una tabla intermedia con el idTrabajador y el idOficina

Gracias!
  #2 (permalink)  
Antiguo 21/04/2010, 10:44
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: Duda en el WHERE

Código SQL:
Ver original
  1. SELECT T.Nombre, O.Oficina
  2. FROM Oficina O
  3. LEFT JOIN [tabla intermedia] TI ON O.idOficina = TI.idOficina
  4. LEFT JOIN Trabajadores T ON TI.idTrabajador = T.idTrabajador
  5. WHERE TI.idOficina IS NULL
No lo he probado, pero por ahi va la solucion.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 21/04/2010, 16:51
Avatar de Atorort  
Fecha de Ingreso: abril-2010
Ubicación: Valencia
Mensajes: 127
Antigüedad: 14 años
Puntos: 0
Respuesta: Duda en el WHERE

Ok, mañana a primera hora lo pruebo y comentaré algo, gracias!
  #4 (permalink)  
Antiguo 22/04/2010, 00:41
Avatar de Atorort  
Fecha de Ingreso: abril-2010
Ubicación: Valencia
Mensajes: 127
Antigüedad: 14 años
Puntos: 0
Respuesta: Duda en el WHERE

Buenas, he probado lo dicho en una tabla de Usuarios y Grupos (idéntica a la otra de oficinas y trabajadores).

Código SQL:
Ver original
  1. --Con esto saco los grupos a los que pertenece el usuario 2.
  2.  
  3. SELECT MiGrupos.id_grupo, MiGrupos.Nombre
  4. FROM MiGrupos
  5. LEFT JOIN MiUsuariosGrupo ON MiGrupos.id_grupo = MiUsuariosGrupo.id_grupo
  6. LEFT JOIN MiUsuarios ON MiUsuariosGrupo.id_usuario = MiUsuarios.id_usuario
  7. WHERE MiUsuariosgrupo.id_usuario = 2
  8.  
  9. --Con esto saco todos los grupos
  10. SELECT id_grupo, nombre
  11. FROM MiGrupos
  12.  
  13. --Me falta una consulta que me lea los datos que me genera la primera y quitárselos a la segunda.
  14. --Las dos tablas tienen el mismo formato, no se si con un UNION o algo así...

Ejemplo: Tengo los grupos Informática, Administración, Jefe Oficina

Si el usuario dos Pertenece a Administración, pretendo una consulta que me muestre Informática y Jefe Oficina.

No se si se puede hacer ni como, yo voy a pelear, si alguien puede echarme una mano o un pie eternamente agradecido xD.

Gracias de antemano! ;)
  #5 (permalink)  
Antiguo 22/04/2010, 02:08
Avatar de Atorort  
Fecha de Ingreso: abril-2010
Ubicación: Valencia
Mensajes: 127
Antigüedad: 14 años
Puntos: 0
Respuesta: Duda en el WHERE

Arj....que tontería !

Ya la tengo, gracias a un compañero de trabajo que la ha sacado en 0,43 décimas...

Código SQL:
Ver original
  1. ç
  2. SELECT id_grupo, nombre
  3. FROM MiGrupos
  4. WHERE id_grupo NOT IN (SELECT MiUsuariosGrupo.id_grupo
  5.                FROM MiUsuariosGrupo
  6.                                        WHERE MiUsuariosgrupo.id_usuario =1)

La dejo por si alguien tiene esta duda aunque no creo xD!

Gracias.
  #6 (permalink)  
Antiguo 22/04/2010, 10:07
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda en el WHERE

Cambia tu NOT IN por un NOT EXISTS, es de mucho mas rapida respuesta

Etiquetas: Ninguno
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 14:46.