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

¿Se puede hacer esta consulta en MySql?

Estas en el tema de ¿Se puede hacer esta consulta en MySql? en el foro de Mysql en Foros del Web. Hola a tod@s. Tengo una duda sobre si se puede hacer cierta consulta a una base de datos. Resulta que tengo una tabla con una ...
  #1 (permalink)  
Antiguo 11/02/2014, 15:49
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
¿Se puede hacer esta consulta en MySql?

Hola a tod@s.

Tengo una duda sobre si se puede hacer cierta consulta a una base de datos.
Resulta que tengo una tabla con una serie de campos, uno de los cuales es un flag con valores 0 ó 1. Me gustaría seleccionar una serie de registros que cumplan una cierta condición y que además al menos uno de ellos tenga el flag a 1.

Sé que una forma de hacerlo sería hacer la consulta sin preocuparse del flag, y luego recorrer el array del resultado y comprobar que algún flag esté a uno. Pero quería saber si hay alguna forma de hacerlo directamente con la consulta a la base de datos.
En caso de que se pudiera hacer con una consulta me gustaría saber si esa forma sería más eficiente que hacerlo recorriendo el array posteriormente, porque a lo mejor me estoy comiendo demasiado la cabeza para que luego no se gane nada en rendimiento haciéndolo de una forma o de otra.

Gracias. Un saludo.
  #2 (permalink)  
Antiguo 11/02/2014, 15:56
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: ¿Se puede hacer esta consulta en MySql?

Lo puedes hacer en una consulta:

Código MySQL:
Ver original
  1. SELECT * FROM table_name WHERE (condition = 1 OR condition2 = 2) AND flag = 1;

Como vez estoy agrupando primero las condiciones que quiero que se cumplan primero entre parentesis para luego si terminar de verificar el flag.

Eso te entendí

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 11/02/2014, 16:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Hola jonni09lo, gracias por responder.

Creo que eso no es lo que quiero porque eso sólo me darían los registros que tienen el flag a 1, y yo quiero también los que tengan el flag a 0 si cumplen la condición, pero al menos uno tiene que estar a 1.
No sé si se entiende bien lo que quiero.

Voy a poner un ejemplo, a ver si se entiende mejor.

Supongamos que tengo una tabla de personas con su ciudad de residencia. Tengo dos personas de Madrid y una de Barcelona. Las de Madrid tienen el flag a 0 y la de Barcelona a 1.
Si ahora quiero consultar las personas que viven en Madrid y Barcelona y que al menos una tenga el flag a 1, la consulta me debería devolver las dos personas de Madrid y la de Barcelona ya que por lo menos la de Barcelona tiene el flag a 1.
Si el flag de Barcelona fuera también 0, la consulta no me debería devolver nada porque ningún flag está a 1.

Espero que se entienda mejor ahora.

Un saludo.

Última edición por gnzsoloyo; 11/02/2014 a las 19:26
  #4 (permalink)  
Antiguo 12/02/2014, 09:23
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: ¿Se puede hacer esta consulta en MySql?

Mmmm pues siguiendo tu ejemplo puedes hacer algo como esto:

Código MySQL:
Ver original
  1. SELECT * FROM `residencia`
  2. WHERE (`residencia` = 'Madrid' OR `residencia` = 'Barcelona')
  3. AND (
  4.     SELECT COUNT(*) FROM `residencia`
  5.     WHERE (`residencia` = 'Madrid' OR `residencia` = 'Barcelona') AND `flag` = 1
  6. ) > 0

Sobra decir que en la subconsulta debes de aplicar la misma condición, agregando únicamente la que es el determinante en este caso (osea el flag)

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 13/02/2014 a las 07:32 Razón: Legibilidad de la consulta
  #5 (permalink)  
Antiguo 13/02/2014, 07:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: ¿Se puede hacer esta consulta en MySql?

¡Así sí funciona!. Además me has iluminado sobre otras cosas que quería hacer.
Muchas gracias

Un saludo.

Etiquetas: campo, registro, tabla
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 18:20.