Tema: 2 sql
Ver Mensaje Individual
  #52 (permalink)  
Antiguo 04/05/2005, 10:36
Avatar de Jose_minglein2
Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Haber he estado mirando tu bd, y por más o menos ya entiendo como va, no se porque el left join no me devuevle los nulls, ahora seguiré mirando, de momento con ésta creo que te podría valer:

SELECT Servicios.ServNombre, TipoServicio.TipoNombre, usuariosservicios.usservidus
FROM Servicios
INNER JOIN TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo

inner JOIN UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ
inner JOIN Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs
inner JOIN Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli
WHERE (Clientes.UsIdCli = 2 and Usuarios.Usid=3)

union

select servicios.servnombre, tiposervicio.tiponombre, null as UsServIdUs
from servicios
INNER JOIN TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo
where servicios.servid not in
(select usuariosservicios.usservidserv from usuariosservicios inner JOIN Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs
inner JOIN Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli WHERE Clientes.UsIdCli = 2 and Usuarios.Usid=3)
ORDER BY ServNombre


Esta devuelve los servicios que tiene asignados el usuario 3 para el cliente 2 y los que no los tiene devuelve un NULL, la he exportado a MySQL pero supongo que SQLSERver te admitirá el union sin problemas, además si te das cuentas 3 y 2 son los codigos que ingresas a la consulta el QueryString y el comboselected