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. ok, acabo de llegar, por lo que veo la consulta está resuelta, no es así, si as hecho como de te dicho, debería tener todos ...

  #31 (permalink)  
Antiguo 04/05/2005, 08:30
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
ok, acabo de llegar, por lo que veo la consulta está resuelta, no es así, si as hecho como de te dicho, debería tener todos los servicios y con el valor del id de usuario sólo los que el usuario tiene, entonces para lo que quieres sería algo así

if (reader4["UsID"] is null)
{
Servicios.Text+="<input class='checkbox' id='" + reader4["ServNombre"].ToString() + "' title='" + reader4["ServNombre"].ToString() + "' type='checkbox' value='" + reader4["ServNombre"].ToString() + "' CHECKED=""FALSE"" name='" + reader4["ServNombre"].ToString() + "'>";
Servicios.Text+=reader4["ServNombre"].ToString();
Servicios.Text+="<br>";
}
else
{
Servicios.Text+="<input class='checkbox' id='" + reader4["ServNombre"].ToString() + "' title='" + reader4["ServNombre"].ToString() + "' type='checkbox' value='" + reader4["ServNombre"].ToString() + "' CHECKED=""TRUE"" name='" + reader4["ServNombre"].ToString() + "'>";
Servicios.Text+=reader4["ServNombre"].ToString();
Servicios.Text+="<br>";
}
  #32 (permalink)  
Antiguo 04/05/2005, 08:35
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
me parece ke no

Como te puse en un post antes, la consulta ke me has puesto me da errores. Y puede ke sea cosa del sql server pero no me va.

Como te dije antes si kieres te envio por correo la base de datos trasladada a access.

POr si te vale:

[IMG]Realciones[/IMG]
  #33 (permalink)  
Antiguo 04/05/2005, 08:44
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 20 años
Puntos: 1
El error yat e he puest oantes q puede ser en la where pones ServId.UsIdCli = 3 en vez de clientes.UsIdCli = 3 ya q USidCli pertenece a la tabla cliente,por lo menos es venia en las anteriores consultas
  #34 (permalink)  
Antiguo 04/05/2005, 08:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Perdona, pero aun no me habia puesto al día con toda la conversación, has corregido ya como te dijo neivan lode ServId.UsIdCli por -> Usuarios.UsIdCli???
  #35 (permalink)  
Antiguo 04/05/2005, 08:52
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
correcciones

He corregido alguno otro error y me sale algo asi:

SELECT Servicios.ServNombre, TipoServicio.TipoNombre, UsuariosServicios.UsServIdUs
FROM Servicios INNER JOIN
TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo LEFT OUTER JOIN
UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ LEFT OUTER JOIN
Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli
WHERE (Clientes.UsIdCli = 3) OR
(UsuariosServicios.UsServIdUs IS NULL)

Pero me sigue diciendo ke la columna Usuarios no coincide.
  #36 (permalink)  
Antiguo 04/05/2005, 08:57
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Es esta???

Pudiera ser que la sql que quieras que ponga sea esta????
SELECT Servicios.ServNombre, TipoServicio.TipoNombre, UsuariosServicios.UsServIdUs
FROM Usuarios INNER JOIN
UsuariosServicios ON Usuarios.UsId = UsuariosServicios.UsServIdUs RIGHT OUTER JOIN
Servicios INNER JOIN
TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo ON UsuariosServicios.UsServIdServ = Servicios.ServId CROSS JOIN
Clientes
WHERE (Clientes.UsIdCli = 2) OR
(UsuariosServicios.UsServIdUs IS NULL)
ORDER BY Servicios.ServNombre

Lo que pasa que esta me devuelve resultados muy dispares, me devuelve los servicios de todos los usuarios pero de todos los clientes o algo asi.
  #37 (permalink)  
Antiguo 04/05/2005, 09:03
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 20 años
Puntos: 1
Por si no encontrais la solucion con una consulta se puede hacer con 2 de una manera sencilla
Tener por un lado la consulta de los listados de todos los servicios del cliente
Por otro lado meter en un dataset una consulta de lso servicios del uauasrio del cliente

en el buble q recorre la primera consulta,dentro crear un dataview q te filtre la segunda consulta por el servivio q en ese momneto estas viendo en la primera,si devulve 1 registro es q lo tiene por lo tanto mostrarlo chekeado,sino devulve ninguna fila es q ese servicio no lo tiene==> mostrarlo sin chekear

Como lo veis esto???
  #38 (permalink)  
Antiguo 04/05/2005, 09:05
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

LEFT OUTER JOIN UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ

LEFT OUTER JOIN Usuarios on Usuarios.UsId = UsuariosServicios.UsServIdUs

LEFT OUTER JOIN Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli

WHERE (Clientes.UsIdCli = 3) OR
(UsuariosServicios.UsServIdUs IS NULL)


Pero sigo pensando que obtienes lo mismo sin las 2 ultimas concatenaciones, puesto que sólo usas el id del usuario
  #39 (permalink)  
Antiguo 04/05/2005, 09:09
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Yo la verdad neivan, al principio para hacer cosas similares he hecho eso que dices, pero como dije al principio (en mi opinión), es mucho más complejo, puesto que traes más datos de la BD y además haces trabajar más al servidor con 2 bucles,

Pero ya te digo, que yo de cuestiones de rendimiento no entiendo mucho, es sólo teoría.

Pero joder, con la consulta me va a sacar loco, jaja. Os puedo asegurar, (sin ánimo de creerme muy listo ni nada así) que he resuelto consultas bastante más complejas en cuestión de 5 minutos. Por eso y como as dicho a mi también me ha picado mucho este post.

Vamos Nombela que ya queda poco!!!
  #40 (permalink)  
Antiguo 04/05/2005, 09:17
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Informe

La sql funciona perfectamente y no me da ningun error y me saca todos los servicios del cliente correspondiente.
Pero claro por mucho ke filtre por usuarios me sigue sacando todos los servicios sin agruparlos.
Esta es la sql:

SELECT Servicios.ServNombre, TipoServicio.TipoNombre, UsuariosServicios.UsServIdUs FROM Servicios INNER JOIN TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo LEFT OUTER JOIN UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ LEFT OUTER JOIN Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs LEFT OUTER JOIN Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli WHERE (Clientes.UsIdCli =2 ) OR (UsuariosServicios.UsServIdUs IS NULL) ORDER BY Servicios.ServNombre

y asi mira si el usuario tiene el servicio o no:

if (reader4["UsServIdUs"]==null)
vamos como me dijo Jose.

El resultado es el listado de todos los servicios pero sin agrupar y no me filtra los usuarios bien
  #41 (permalink)  
Antiguo 04/05/2005, 09:21
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 20 años
Puntos: 1
La solucion q acabo de proponer solo lelba un bucle y no creo q sea tan costosa para la aplicación,de todas formas estoy contigo Jose_minglein2 en que mejor tener un cosnulta.
Pero ahora mismo no me sale como hacer para que me salga en vez de esto q le
x elemplo

alumnos cursos
1 1
1 2
2 1

q salga esto

alumnos cursos
1 1 2 3
2 1

q e slo q le gustaria q le salfria segun he entendido entendiendo alumnos por servicios....
no me sale esa concatenacion
Y mira q he hecho consultas yo tb pero ahora no ....
  #42 (permalink)  
Antiguo 04/05/2005, 09:28
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
A que te refieres con que no te salen agrupados, haber, vamos por partes, si los datos de tu base de datos son correctos la consulta ha de devolverte exactamente esto:

ServNombr TipoNombre UsId
Lan/Wan Alcobendas Lan/Wan 3
Lan/Wan Valdemoro Lan/Wan 3
Lan/Wan Pozuelo Lan/Wan 3
Seguridad Valdemoro Seguridad NULL
Seguridad Pozuelo Seguridad 3
Wifi Pozuelo Wifi 3
  #43 (permalink)  
Antiguo 04/05/2005, 09:28
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Base De Datos

Insisto en que si quereis os paso la base de datos en access para verlo mas claro xq yo no veo muy bien que se pueda hacer en 1 sola consulta xq en 1 sola consulta no puedes compaginar el agrupar todos los servicios y ademas saber que usuario tiene cada servicio o si????
Estoy en ascuas vamos.
  #44 (permalink)  
Antiguo 04/05/2005, 09:30
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
No

Me devuelve esto

Lan/Wan Alcobendas Lan/Wan 3
Lan/Wan Pozuelo Lan/Wan 3
Lan/Wan Valdemoro Lan/Wan 3
Lan/Wan Valdemoro Lan/Wan 39
Lan/Wan Valdemoro Lan/Wan 46
Seguridad Pozuelo Seguridad 3
Seguridad Pozuelo Seguridad 46
Seguridad Valdemoro Seguridad 3
Seguridad Valdemoro Seguridad 39
Seguridad Valdemoro Seguridad 46
Wifi Pozuelo Wifi 3
  #45 (permalink)  
Antiguo 04/05/2005, 09:37
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Estas seguro que con los left join y con los where te devuevle eso???????Una de dos o SQL Server rompe mis principios de SQL o me toy volviendo majareta, según entiendo yo los registros de:


Lan/Wan Valdemoro Lan/Wan 39
Lan/Wan Valdemoro Lan/Wan 46
Seguridad Pozuelo Seguridad 46
Seguridad Pozuelo Seguridad 46

No te los devería devolver.

mi e-mail es [email protected] si me la quieres enviar y que lo miré yo.
  #46 (permalink)  
Antiguo 04/05/2005, 09:39
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 20 años
Puntos: 1
Es q el usuario es diferente q el cliente Jose_minglein2
De aki un poco el lio
Priemro lo q ah de mostrar son todos los servicios del cliente por ejmplo 3
Luego cehkear los del uauario x
Si no he entendido mal
Entonces por un lado esta el flitro del cliente y por otro ira el del usuario,es decir poner un usuarioid= lo q este en el drop o null aparte del cliente=3

Esto lo puedes hacer si no necesitas ver todos los nombres d elso usuarios(cosa q no tengo mu clara si la necesitas nombela)
  #47 (permalink)  
Antiguo 04/05/2005, 09:44
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Seguro

Ya te envie la base de datos espero ya la hayas recibido.

Mira la sql que pongo es esta:

SELECT Servicios.ServNombre, TipoServicio.TipoNombre, UsuariosServicios.UsServIdUs
FROM Servicios INNER JOIN
TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo LEFT OUTER JOIN
UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ LEFT OUTER JOIN
Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs LEFT OUTER JOIN
Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli
WHERE (Clientes.UsIdCli = 2) OR
(UsuariosServicios.UsServIdUs IS NULL)
ORDER BY Servicios.ServNombre

Y me devuelve lo que te puse antes asi ke no se...
  #48 (permalink)  
Antiguo 04/05/2005, 09:48
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
No me ha llegado Diego, no has adjuntado bien el mdb, con respecto a lo que dices neivan, aunque sean diferentes sería añadir:

SELECT Servicios.ServNombre, TipoServicio.TipoNombre, UsuariosServicios.UsServIdUs
FROM Servicios INNER JOIN
TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo LEFT OUTER JOIN
UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ LEFT OUTER JOIN
Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs LEFT OUTER JOIN
Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli
WHERE (Clientes.UsIdCli = 2 and Clientes.CliId=4) OR
(UsuariosServicios.UsServIdUs IS NULL)
ORDER BY Servicios.ServNombre

Por ejempo y suponiendo que el id de clientes sea CliId que creo que sí (es por no cambiar de páginas, que ya llevamos tocho)
  #49 (permalink)  
Antiguo 04/05/2005, 09:55
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 20 años
Puntos: 1
me refero a esto
SELECT Servicios.ServNombre, TipoServicio.TipoNombre, UsuariosServicios.UsServIdUs
FROM Servicios INNER JOIN
TipoServicio ON TipoServicio.TipoId = Servicios.ServIdTipo LEFT OUTER JOIN
UsuariosServicios ON Servicios.ServId = UsuariosServicios.UsServIdServ LEFT OUTER JOIN
Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs and (
(usuarios.usid=3) OR
(UsuariosServicios.UsServIdUs IS NULL))

LEFT OUTER JOIN
Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli
WHERE (Clientes.UsIdCli = 2 )
ORDER BY Servicios.ServNombre


Ves la diferencia???
  #50 (permalink)  
Antiguo 04/05/2005, 09:55
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
ok, Ya la tengo ahora te cuento
  #51 (permalink)  
Antiguo 04/05/2005, 09:56
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
cierto

Lo que dice Neivan es cierto, yo filtro primero por el cliente que me llega por querystring y luego en un combo estan todos los usuarios de ese cliente que me valen para que se vean la lista de los servicios del clientes y marcados con un check los que coinciden con el usuario que hay seleccionado en el combo.
Siento no haberlo dicho antes pero pense que ya se sabia, como este post es tan largo.
  #52 (permalink)  
Antiguo 04/05/2005, 10:36
Avatar de 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
  #53 (permalink)  
Antiguo 04/05/2005, 10:41
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Vale tío creo que ya tengo la consulta más fácil y sencilla:

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 usservidus=3
left JOIN Usuarios ON Usuarios.UsId = UsuariosServicios.UsServIdUs
left JOIN Clientes ON Clientes.UsIdCli = Usuarios.UsIdCli and clientes.usidcli=2
ORDER BY ServNombre

Esta te devuelve exactamente lo mismo que la otra, pero evidentemente muchisimo más simplificada.

Recuerda que los NULLs -> cecked =False

Dime por favor que ya hemos dado en clavo!!!

jeje
  #54 (permalink)  
Antiguo 04/05/2005, 11:56
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Habra que esperar

Hola siento decirte que me tuve que ir del trabajo xq perdia el autobus pero que mañana por la mañana sin falta lo pruebo y te digo.
Gracias por la ayuda.
  #55 (permalink)  
Antiguo 05/05/2005, 01:12
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Casi pero no

Hola la sql me saca todos los servicios existentes pero no solo los del cliente ese.
Por lo demas todo bien, solo que me saca un servicio de mas???? y no se xq

Última edición por Nombela; 05/05/2005 a las 01:20
  #56 (permalink)  
Antiguo 05/05/2005, 01:30
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Ok, pensaba que querías todos los servicios y a partír de ahí seleccionar, para que te muestre sólo los del cliente: (te pongo de momento la larga)

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)
ORDER BY ServNombre


con esto sacas todos los servicios relacionados con el cliente 2 y agrupados, y en null los del usuario los que no son del usuario 3 y con 3 los que sin sol de éste, dime que es así y te lo pongo en cortita
  #57 (permalink)  
Antiguo 05/05/2005, 01:36
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
Eso es

Eso es lo que quiero, que me salgan todos los servicios del cliente 2 y a null los que no tiene el usuario 3.
Pero con tu sql larga me siguen saliendo todos los servicios de la aplicacion.
  #58 (permalink)  
Antiguo 05/05/2005, 01:48
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
¿Estás seguro de eso???A mi sólo me salen los 5 serivicios que tiene el cliente 2, y la aplicacion tiene 7.Haz un copy/paste tal cual de esta última consulta que te he puesto, y pruebalo otra vez, si sigue saliendo mal dime el resultado de la consulta
  #59 (permalink)  
Antiguo 05/05/2005, 01:55
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 10 meses
Puntos: 1
[B]Esta es la sql que pongo:[B]

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)
ORDER BY ServNombre

Este es el resultado

Ip Pozuelo Ip null
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


En este caso el ip pozuelo no deberia de salir xq es de otro cliente
  #60 (permalink)  
Antiguo 05/05/2005, 02:12
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
perdón, tienes razón, te pongo de nuevo la larga buena

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
ORDER BY ServNombre
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 04:53.