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

AND y OR en la misma consulta

Estas en el tema de AND y OR en la misma consulta en el foro de Mysql en Foros del Web. A ver a ver... esto me esta volviendo loco! Supongamos la siguiente situacion: Tabla A nombre, nacionalidad, departamento_donde_trabaja Esta tabla fue creada con la opcion ...
  #1 (permalink)  
Antiguo 11/10/2009, 16:33
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 15 años, 10 meses
Puntos: 1
AND y OR en la misma consulta

A ver a ver... esto me esta volviendo loco!

Supongamos la siguiente situacion:
Tabla A
nombre, nacionalidad, departamento_donde_trabaja

Esta tabla fue creada con la opcion CREATE VIEW (no se si influye pero por las dudas lo comento)

El tema es que yo tengo un formulario de busqueda con opciones como Nacionalidad y departamento_donde_trabaja, las dos con checkbox.

El problema es que cuando hago las consultas pertinentes me da siempre una info que no es correcta.

Supongamos que yo hago una consulta asi:

SELECT * FROM tabla A WHERE nacionalidad = 1 OR nacionalidad = 2 AND departamento_donde_trabaja = 1

Me tira cualquier resultado. Me devuelve practicamente todos los resultados.

Lo peor es que posiblemente sea algo muy simple, pero como dicen... el arbol no me deja ver el bosque.

A la espera de una vision total del bosque... saludos...

Lucianomdq
  #2 (permalink)  
Antiguo 11/10/2009, 17:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: AND y OR en la misma consulta

Las condiciones de un WHERE siguen las mismas reglas que los ejercicios de Lógica: Si una condición OR debe ser evaluada como una sola proposición, esta debe ser encerrada entre paréntesis.
Como los operadores de lógica se evalúan secuencialmente, en tu caso la idea es que devolverá los registros si:
1) nacionalidad es 1.
2) nacionalidad es 2 y departamento_donde_trabaja es 1.
Para que la disyunción opere bien hay dos formas:

Código sql:
Ver original
  1. SELECT *
  2. FROM tabla A
  3. WHERE (nacionalidad = 1 OR nacionalidad = 2) AND departamento_donde_trabaja = 1;
o bien:

Código sql:
Ver original
  1. SELECT *
  2. FROM tabla A
  3. WHERE nacionalidad IN (1, 2)  AND departamento_donde_trabaja = 1;

La segunda forma es más rápida ante tablas muy grandes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/10/2009, 17:42
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: AND y OR en la misma consulta

Hola yo de nuevo puedo poner parte del codigo porque la verdad de solo leer lo que pusiste aqui y no entendi bien lo que quieres. como pasas los datos a la consulta?

Salu2
__________________
Atte. Mohamed :aplauso:
  #4 (permalink)  
Antiguo 12/10/2009, 09:41
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: AND y OR en la misma consulta

Gracias gnzsoloyo! era justamente eso lo que necesitaba!
Mil gracias por despejar el arbol que me tapaba el bosque!
  #5 (permalink)  
Antiguo 14/10/2009, 06:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: AND y OR en la misma consulta

Solo para despejar dudas....

Cita:
Esta tabla fue creada con la opcion CREATE VIEW (no se si influye pero por las dudas lo comento)
Luego no es una tabla es una VISTA.

Por lo demas las reglas de logica se aplican exactamente igual....

Quim
  #6 (permalink)  
Antiguo 14/10/2009, 15:02
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: AND y OR en la misma consulta

Estamos hilando fino ya... pero segun tengo entendido es una tabla virtual.
Se comporta como una tabla, responde a los mismos parametros que una tabla y se la consulta de la misma manera.
Es una tabla en definitiva... o no?
  #7 (permalink)  
Antiguo 14/10/2009, 15:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: AND y OR en la misma consulta

No luciano.

Una vista, es una representación gráfica de una consulta (Por así decirlo)

Por ejemplo...

Código sql:
Ver original
  1. CREATE VIEW v_consulta AS
  2. SELECT tabla1.* FROM tabla INNER JOIN tabla2 ON
  3. tabla1.id=tabla2.id INNER JOIN tabla3
  4. ON tabla1.id=tabla3.id INNER JOIN etc etc.

Puede ser una consulta enorme dificilmente administrable, pero con esa sentencia se puede tomar como una simple tabla, con lo cual bastaría con poner:

Código sql:
Ver original
  1. SELECT *FROM v_consulta;

Para obtener el mismo resultado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 16/10/2009, 06:47
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: AND y OR en la misma consulta

Perfecto! muchas gracias!!!
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 00:33.