Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

select con inconveniente en condicionales

Estas en el tema de select con inconveniente en condicionales en el foro de Mysql en Foros del Web. Saludos Estoy realizando un sistema de información para soporte de equipos, y se quiere tener una consulta que haga lo siguiente Seleccione algunos campos de ...
  #1 (permalink)  
Antiguo 26/04/2010, 17:00
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
select con inconveniente en condicionales

Saludos

Estoy realizando un sistema de información para soporte de
equipos, y se quiere tener una consulta que haga lo siguiente

Seleccione algunos campos de la tabla equipos (id, codinventario, modelo)
donde esten activos (activo='S') y NO se encuentren en la tabla empleadosequipos (es decir, que no hayan sido asignados)
y adicional a esto QUE SEAN de un tipo especifico de equipo (idtipoequipos < 3 o idtipoequipo = 4 o idtipoequipo = 11)

Tenemos así la siguiente consulta

Código MySQL:
Ver original
  1. SELECT id, concat(codinventario,' ',modelo) as title FROM equipos
  2. WHERE estado =  'S'
  3. AND idtipoequipos >0 AND idtipoequipos <3
  4. AND id NOT IN  (SELECT idequipos FROM empleadosequipos)
  5. or idtipoequipos = 11  or  idtipoequipos = 4 order by modelo ;

Lo cual me trae el siguiente resultado

Código HTML:
Ver original
  1. id  title
  2. 4    4 culaquiercosa
  3. 5    5 pavilion

Sin embargo, si vemos en la tabla empleadosequipos, ya existe en dicha tabla el equipo con id= 4 asignado (es el registro con id 5 de la tabla empleadosequipos)

Código HTML:
Ver original
  1. id idempleados idequipos
  2. 5               7              4

Razón por la cual debería traerme lo siguiente

Código HTML:
Ver original
  1. id  title
  2. 5 5 pavilion

Intente esta otra consulta

Código MySQL:
Ver original
  1. SELECT id, concat(codinventario,' ',modelo) FROM equipos
  2. WHERE estado =  'S'
  3. AND id NOT IN (SELECT idequipos FROM empleadosequipos)
  4. AND  idtipoequipos = 1
  5. OR idtipoequipos = 2 OR idtipoequipos = 4 OR  idtipoequipos = 11
  6. order by modelo;

Obteniendo el mismo resultado

Quisiera saber que otras opciones podría usar (Estaba usando EXISTS o NOT EXISTS pero no lo he conseguido tampoco), o que sugerencias se pueden
hacer al modelo existente

La bd sobre la que estoy haciendo las pruebas las pueden acceder aquí

El usuario es mortiweb_test y el password es test123

Agradezco sus aportes
Saludos
  #2 (permalink)  
Antiguo 26/04/2010, 17:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: select con inconveniente en condicionales

Verifica de esta forma
Código MySQL:
Ver original
  1. SELECT id, CONCAT(codinventario,' ',modelo) title
  2. FROM equipos
  3. WHERE estado =  'S'
  4.   AND id NOT IN (SELECT idequipos FROM empleadosequipos)
  5.   AND (idtipoequipos = 1 OR idtipoequipos = 2 OR idtipoequipos = 4 OR idtipoequipos = 11)
  6. ORDER BY modelo
o así
Código MySQL:
Ver original
  1. SELECT e.id, CONCAT(codinventario,' ',modelo) title
  2. FROM equipos e LEFT JOIN empleadosequipos q ON e.id = q.idequipos
  3. WHERE estado =  'S'
  4.   AND q.id IS NULL
  5.   AND (idtipoequipos = 1 OR idtipoequipos = 2 OR idtipoequipos = 4 OR idtipoequipos = 11)
  6. ORDER BY modelo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 26/04/2010 a las 18:03
  #3 (permalink)  
Antiguo 26/04/2010, 18:49
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
De acuerdo Respuesta: select con inconveniente en condicionales

Saludos
Muchas gracias, funcionan ambos perfectamente, estaba haciendo pruebas
y pues lo que me hacia falta era encerrar las condiciones entre parentesis en el AND que propones en el primer query

De nuevo, thanks y sobre todo tu rápida respuesta
  #4 (permalink)  
Antiguo 26/04/2010, 23:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: select con inconveniente en condicionales

Entiendo que la forma más eficiente es la segunda.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: condicionales, select
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 20:41.