Foros del Web » Programación para mayores de 30 ;) » .NET »

2 sql

Estas en el tema de 2 sql en el foro de .NET en Foros del Web. Esto que me has puesto me saca todos los servicios del cliente pero no me los agrupa, es decir me salen 2 veces el servicio ...

  #61 (permalink)  
Antiguo 05/05/2005, 02:20
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Esto que me has puesto me saca todos los servicios del cliente pero no me los agrupa, es decir me salen 2 veces el servicio Lan/Wan Valdemoro por ejemplo uno es el del usuario 3 y otro que es el del usuario 39 que esta a null.

me sale esto:

Lan/Wan Alcobendas Lan/Wan 3
Lan/Wan Pozuelo Lan/Wan 3
Lan/Wan Valdemoro Lan/Wan null
Lan/Wan Valdemoro Lan/Wan 3
Seguridad Pozuelo Seguridad null
Seguridad Pozuelo Seguridad 3
Seguridad Valdemoro Seguridad null
Seguridad Valdemoro Seguridad 3
Wifi Pozuelo Wifi 3

y deberia salir esto:

Lan/Wan Alcobendas Lan/Wan 3
Lan/Wan Pozuelo Lan/Wan 3
Lan/Wan Valdemoro Lan/Wan 3
Seguridad Pozuelo Seguridad 3
Seguridad Valdemoro Seguridad 3
Wifi Pozuelo Wifi 3
xq este ususario tiene todos los servicios de este cliente
  #62 (permalink)  
Antiguo 05/05/2005, 03:29
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Imposible????

Al final lo hago con 2 sql no??? No era posible hacerlo con una verdad???
Gracias de todos modos por intentarlo.
  #63 (permalink)  
Antiguo 05/05/2005, 03:58
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
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 usuariosservicios.usservidus=3)
UNION

SELECT servicios.servnombre, tiposervicio.tiponombre, NULL AS 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 usuariosservicios.usservidus<>3 and Servicios.servid not in
(
SELECT servicios.servid
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 usuariosservicios.usservidus=3)
)
ORDER BY ServNombre


Pero esta es demasiado gorda, voy a seguir investigando

PD. perdona la tardanza
  #64 (permalink)  
Antiguo 05/05/2005, 04:09
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
oeoeoeooeoe

Esta funciona perfectamente lo unico eso que es muy larga pero ya esta casi conseguido.
PD: No me pidas perdon por la tardanza que me ofendes, perdon tenia que pedirte yo xq el tiempo que le estas dedicando.
Gracias
  #65 (permalink)  
Antiguo 05/05/2005, 04:29
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 20 años
Puntos: 1
Oleee,muy buna Jose_minglein2.
  #66 (permalink)  
Antiguo 05/05/2005, 04:57
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
No es buena, es larga, pero es un apaño, de momento. Como dije, me he picao y hasta que no tenga algo en condiciones no paro.

Jeje.
  #67 (permalink)  
Antiguo 05/05/2005, 05:08
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
más cortita (haz varias pruebas para comprobar que devuelve lo que quieres, pero creo que funciona de P.M.)

SELECT Servicios.ServNombre, TipoServicio.TipoNombre, usuariosservicios.usservidus
FROM Servicios
INNER JOIN TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo
LEFT JOIN UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ and usuariosservicios.usservidus=3
left JOIN Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs
left JOIN Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli
where Servicios.Servid in
(
SELECT Servicios.ServId
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
)
ORDER BY ServNombre


yeeeeeeeee, como mola, eh?'
  #68 (permalink)  
Antiguo 05/05/2005, 05:18
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Yuuuuuuujuuuuuuuuu

Funciona a la perfeccion. Te juro que pensaba que era imposible y mira que buena. Muchas gracias por la ayuda prestada y espero no encontrarme con otra sql de estas nunca. xq podria tardar años en sacarla.
Un saludo
  #69 (permalink)  
Antiguo 05/05/2005, 05:22
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Que va, si es lo que mola, afán de superación, jeje. Creo que es imposible recortarla más, pero un consejo para que no se alarguen tanto (siempre y cuando te aclares bien, si no no), es que en vez de p.ej:

From Servicios Where Servicios.ServId....
pongas
From Servicios S Where S.ServId.....

Eso te acortará bastante las consultas, siempre y cuando procures utlizar nombres identificativos p.ej
UsuariosServicios US
Clientes C
Paginas Pa
Perfiles Pe

Un saludo y para lo que quieras, ya sabes...
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 19:07.