MySQL - Utilizar operadores logicos juntos (and/or ,y/o)

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 40 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Utilizar operadores logicos juntos (and/or ,y/o)

Publicado por Brian (1 intervención) el 26/07/2017 01:46:31
Buenas tardes, soy nuevo en el foro, ojala me puedan ayudar se los agradeceria..
El codigo:


1
2
3
4
5
$muni=$_REQUEST['Vmunicipio'];
 
$esta=$_REQUEST['Vestatus'];
 
$query = "SELECT  grupos.curp, integrantes.nombre, integrantes.telefono, integrantes.direccion, integrantes.municipio, integrantes.tipo, grupos.nombre_grupos, grupos.estatus,  grupos.fecha, grupos.observaciones from integrantes  inner join grupos on integrantes.fk_grupos=grupos.curp where tipo='Titular' and  estatus='$esta' and  municipio='$muni'  " ;


Solo tengo problemas en lo que esta subrrayado ,lo que pasa es que me arrojara una consulta si es que pongo algun estatus Y si pongo algun municipio, pero tambien quiero poder que me arroje la consulta si esta seleccionado alguno de los dos variables (ya sea estatus o municipio o los dos y/o ) como el podre hacer : c espero me haya explicado
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
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Utilizar operadores logicos juntos (and/or ,y/o)

Publicado por leonardo_josue (414 intervenciones) el 26/07/2017 19:48:34
Hola Brian:

Lo primero que debes tener en cuenta para poder mezclar condiciones AND y OR, es el hecho de que estos operadores NO TIENEN LA MISMA JERARQUÍA... al igual que en matemáticas con los operadores * y +, si tu haces 2 + 3 * 6, el resultado es 20, ya que la multiplicación tiene más jerarquía que la suma, por lo tanto se ejecuta primero... entonces, si quieres que se ejecute primero la suma, DEBES HACER USO DE PARENTESIS:

(2 + 3) * 6 = 30

Con esto en mente, el AND y el OR funcionan igual, el operador AND tiene más jerarquía que el OR, por lo que se ejecutara primero.

Por lo tanto, tu condición podría quedar así:

1
2
3
4
...
WHERE
tipo='Titular' AND  (estatus='$esta' OR  municipio='$muni')
...

entonces, tu tabla de verdad queda así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+---------------------+---------------+-----------------+---------+
|TIPO = tipo='Titular'|estatus='$esta'|municipio='$muni'|   Salida|
+---------------------+---------------+-----------------+---------+
|            verdadero|      verdadero|        verdadero|verdadero|
+---------------------+---------------+-----------------+---------+
|            verdadero|      verdadero|            falso|verdadero|
+---------------------+---------------+-----------------+---------+
|            verdadero|          falso|        verdadero|verdadero|
+---------------------+---------------+-----------------+---------+
|            verdadero|          falso|            falso|    falso|
+---------------------+---------------+-----------------+---------+
|                falso|      verdadero|        verdadero|    falso|
+---------------------+---------------+-----------------+---------+
|                falso|      verdadero|            falso|    falso|
+---------------------+---------------+-----------------+---------+
|                falso|          falso|        verdadero|    falso|
+---------------------+---------------+-----------------+---------+
|                falso|          falso|            falso|    falso|
+---------------------+---------------+-----------------+---------+


Haz la prueba y nos comentas.

Saludos
Leo.
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