
04/05/2005, 10:36
|
 | | | Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 5 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 |