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

where algo=any?

Estas en el tema de where algo=any? en el foro de Mysql en Foros del Web. Hola, tengo el siguiente problema: Tengo un formulario con campos de tipo list/menu que sirve para filtrar resultados de una bbdd. Quiero seleccionarlos así: SELECT ...
  #1 (permalink)  
Antiguo 10/12/2009, 05:21
Avatar de kanakis  
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 16 años
Puntos: 0
where algo=any?

Hola, tengo el siguiente problema:

Tengo un formulario con campos de tipo list/menu que sirve para filtrar resultados de una bbdd. Quiero seleccionarlos así:

SELECT * FROM TABLA WHERE TIPO='$tipo' AND CLASE='$clase';

¿Qué valor debo asignar a $clase cuando quiera mostrar todas las entradas de un TIPO para cualquier clase?

Es decir, me imagino que debe de haber una expresión genérica que sirva de comodín del tipo ANY: "...AND CLASE=ANY", pero no la encuentro por ninguna parte.

Gracias de antemano y un saludo.
  #2 (permalink)  
Antiguo 10/12/2009, 05:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: where algo=any?

Elimina la condición TIPO=loquesea, y no hará ninguna discriminación.
Si quieres algo más, podrías hacer que te devuelva todos aquellos que contengan algo pon:
Código sql:
Ver original
  1. SELECT *
  2. FROM TABLA
  3. WHERE TIPO IS NOT NULL AND CLASE='$clase';
__________________
¿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 10/12/2009, 06:43
Avatar de kanakis  
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 16 años
Puntos: 0
Respuesta: where algo=any?

Nos vemos de nuevo gnzsoloyo :D

Creo que no me he explicado bien o no te he entendido del todo. El problema es que no sólo tengo los campos TIPO y CLASE, son muchos más en realidad (he puesto dos por simplificar).

Imagínate un formulario donde hay 10 campos de tipo List/Menu. Cada uno de estos campos tiene 4 o 5 valores posibles, pero uno de estos valores es "TODOS". Así pues, esta podría ser la selección hecha por el usuario en el FORM:

TIPO=> tipo1 ($tipo)
CLASE=>TODOS ($clase)
MARCA=>TODOS ($marca)
...
COLOR=>blanco ($color)

Es decir, el usuario quiere seleccionar los objetos blancos de tipo1 de cualquier clase y marca.

Para ello lo trataría genéricamente con la siguiente consulta:

Código:
SELECT * FROM TABLA WHERE TIPO='$tipo' 
AND CLASE='$clase' AND MARCA='$marca' AND ... 
AND COLOR='$color';
Traduciendo el valor de las variables tras el envío de estas con POST desde el formulario, la consulta quedaría así:

Código:
SELECT * FROM TABLA WHERE TIPO='tipo1' AND CLASE='CUALQUIERA' 
AND MARCA='CUALQUIERA' AND ... 
AND COLOR='blanco';
En color rojo resalto cuál es mi duda: dado que la consulta es un string fijo (ya que lo que varían son las variables, valga la redundancia), a veces será TIPO, otras CLASE, otras MARCA y otras COLOR los campos que tengan el valor "cualquiera". ¿Qué debe valer pues, el "value" correspondiente a "TODOS" en el formulario para que se realice la consulta correctamente?

Espero haberme explicado mejor ahora, y si ya me habías entendido... mis más sinceras disculpas, pero en ese caso no te he entendido yo a ti :S

Edito: según lo que dices, ¿sería válido hacer esto?

Código:
SELECT * FROM TABLA WHERE TIPO='tipo1' AND CLASE IS NOT NULL 
AND MARCA IS NOT NULL AND ... 
AND COLOR='blanco';

Última edición por kanakis; 10/12/2009 a las 06:48
  #4 (permalink)  
Antiguo 10/12/2009, 09:35
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 8 meses
Puntos: 77
Respuesta: where algo=any?

Cita:
Iniciado por kanakis Ver Mensaje
Edito: según lo que dices, ¿sería válido hacer esto?

Código:
SELECT * FROM TABLA WHERE TIPO='tipo1' AND CLASE IS NOT NULL 
AND MARCA IS NOT NULL AND ... 
AND COLOR='blanco';
Sip :)
  #5 (permalink)  
Antiguo 10/12/2009, 09:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: where algo=any?

Cita:
a veces será TIPO, otras CLASE, otras MARCA y otras COLOR los campos que tengan el valor "cualquiera". ¿Qué debe valer pues, el "value" correspondiente a "TODOS" en el formulario para que se realice la consulta correctamente?
Este tipo de problemas se resuelve dinamicamente mientras creas la sentencia, de conformidad con los valores seleccionados en el formulario. Simplemente vas agregando el valor en un caso y en otro el IS NOT NULL.
Yo engo en vb.Net varios momentos en que las sentenicas toman una forma u otra segúnsean los valores de ciertos parámetros.
En estos caso no te conviene hacer una sentencia única y simplemente cargarle valores. No. Debes crearla de una determinada forma para que responda a lo que debe obtener. Pero eso no ser hace en la base de datos, sino en la aplicación.
Existe, si, la posibilidad de hacerlo en la base de datos, pero el método impica conocer bien el uso de sentencias preparadas, variables de usuario (en MySQL) y procedimientos almacenados. Si no quieres meterte con eso, mejor hazlo en la aplicación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 13:43.