SQL - Otra forma de hacer este comando SQL

 
Vista:

Otra forma de hacer este comando SQL

Publicado por Hubert Casimiro Taco (98 intervenciones) el 24/09/2005 21:33:25
Buenas.

la siguiente instruccion me devuelve 4 registros (a lo mucho) y esta bien.

SELECT a.nope_unico, a.cdisplay1, b.localip FROM movidiario a, display b
WHERE a.nope_unico = 1283 And a.cdisplay1 = b.cdisplay UNION
SELECT a.nope_unico, a.cdisplay2, b.localip FROM movidiario a, display b
WHERE a.nope_unico = 1283 And a.cdisplay2 = b.cdisplay UNION
SELECT a.nope_unico, a.cdisplay3, b.localip FROM movidiario a, display b
WHERE a.nope_unico = 1283 And a.cdisplay3 = b.cdisplay UNION
SELECT a.nope_unico, a.cdisplay4, b.localip FROM movidiario a, display b
WHERE a.nope_unico = 1283 And a.cdisplay4 = b.cdisplay

Tabla MOVIDIARIO tiene (nope_unico, cdisplay1, cdisplay2, cdisplay3, cdisplay4)
1283 1 2 3 4
Tabla DISPLAY tiene (cdisplay, locapip)
1 192.168.2.15
2 192.168.2.15
3 192.168.2.15
4 192.168.2.15

Creo que se estan haciendo 4 consultas en ese mismo comando.

Se puede hacer de otra forma de tal forma que se realice menos consultas.

Saludos.
Hubert Casimiro Taco.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Otra forma de hacer este comando SQL

Publicado por Liliana (426 intervenciones) el 26/09/2005 15:35:26
Hola Hubert,
Si tuvieras la seguridad de que los datos de cdisplay1 y cdisplay4 corresponden al menor y mayor respectivamente para su clave, esta consulta funciona, de otra forma no:

SELECT a.nope_unico, b.cdisplay, b.locapip
FROM movidiario a
INNER JOIN display b
ON a.nope_unico = 1283 AND
b.cdisplay BETWEEN a.cdisplay1 AND a.cdisplay4

Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra forma de hacer este comando SQL

Publicado por Hubert Casimiro T. (98 intervenciones) el 26/09/2005 19:22:50
Hola LILI.
Falto indicar que solo el campo CDISPLAY1 es obligario que este lleno. los demas no.

Referente a mi consulta con UNIONES, esta de todas maneras asi solo ubiera valor el CDISPLAY1 me devuelve solo ese registro.

Referente a velocidad. este comando se realiza 4 veces a pesar que display2, display3, display4 enten vacios?

Referente a velocidad de proceso. Se demora como si se hiciera 4 busquedas?

Gracias LILI y hasta la proxima!
Atentamente.
Hubert CAsimiro Taco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Otra forma de hacer este comando SQL

Publicado por Liliana (426 intervenciones) el 26/09/2005 20:27:24
Hola Hubert,
Entonces la consulta que te envié no vale para tu caso.
Con respecto a la que publicaste, aunque los tres campos no obligatorios estén vacíos, las consultas correspondientes se ejecutan igual, solo que no devolverán filas.
Depende de la cantidad de información que tenga cada clave, el tiempo que tarde en realizarse; también podrías tener un índice que incluya este dato.
Podés ejecutarlo con el Plan de Ejecución activado y tratar de optimizar con los resultados que veas.
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar