Mostrar una condición dentro de unos campos

Hola experto, nuevamente aquí estoy nuevamente; esta nueva pregunta va relacionada con la anterior(el formulario con los 3 campos de texto).
El juego de registros lo he hecho de la siguiente forma:
SELECT *
FROM compra
WHERE Tipo = 'colname' and Localidad = 'colname2' and Zona = 'colname3'
Con este juego de registros estoy obligado a meter los tres campos(tipo, localidad, zona). Hasta aquí todo perfecto.
Pero lo que quisiera es que me pida Tipo, Localidad(que estos datos sean obligatorios, que lo son hasta ahora)pero que en el campo zona sea opcional(se que si pongo "or" puede ser opcional);pero claro si pongo "or" y esta condición se cumple en algún otro registro (que no tenga nada que ver con los campos Tipo, localidad; también me los muestra; y no es lo que quiero).
Lo que quiero es que me muestre solo con la tercera condición dentro de los campos anteriores.
De seguro te he liado espero me entiendas.
Muchas gracias.

1 respuesta

Respuesta
1
Te digo he leído varias veces la pregunta pero no logro entender.
Lo que entendí es que quieres filtrar por dos campos y filtrarías por el tercero solamente si lo ingresas.
Si esto es lo que quieres tienes dos formas de hacerlo:
A través de una consulta:
SELECT *
FROM compra
WHERE Tipo = 'colname' and Localidad = 'colname2' and (Zona = 'colname3' or Zona='')
O a través de código, concatetando la expresión xona si solamente fue algo ingresado es decir:
$query = "SELECT *
FROM compra
WHERE Tipo = '%colname' and Localidad = '$colName2' ";
if ($zona != ""){
$query+=" AND Zona = '$zona' ";
}
Cualquier otra duda o que no haya entendido la pregunta, no dudes en volverme a preguntar
Leandro
Muchas gracias, es muy importante tu respuesta; me servirá de mucho; lo que quería hacer es que me filtre también por el tercer campo pero tomando como referencia los dos campos anteriores.
Ejemplo:
tipo= pila
localidad= roja
zona= alkalina
Entonces que me muestre alkalina siempre y cuando cumpla con pila y roja.
Un Saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas