Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/09/2009, 13:47
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Como hago para crear una csnulta con tres parametros

La consulta cruza todas las tablas partiendo de la MARKETS (obviamente es la que siempre debe contener algo, porque sino ¿qué buscas?), y devuelve una tabla qmue puede o no tener coincidencias con PRODUCTOS y CIUDADES; no importa, de todos modos devolverá los ID de los comercios.
El WHERE hace que de estas devuelva todos los casos en que la URL no sea NULL, esto es, donde el campo contenga algo. Para afinarlo y que descarte todos aquellos registros donde haya un caracter vacío, debería ser:
Código sql:
Ver original
  1. SELECT
  2.           M.market_id, M.market_direccion. CI.ciudad_nombre, M.market_url
  3. FROM
  4.           markets M INNER JOIN combinada C ON C.comb_market_id = M.market_id
  5.           INNER JOIN ciudades CI ON C.comb_ciudad_id = CI.ciudad_id
  6.           LEFT JOIN productos P ON C.comb_prod_id = P.prod_id
  7. WHERE
  8.           P.prod_producto LIKE '%alimentos para perro%' AND
  9.           (M.market_url IS NOT NULL OR M.market_url != '') ;
El WHERE además considera que contenga la frase "alimentos para perro" antecedida o precedida de cualquier cosa. Si se quiere que sea con esa frase en el producto, o con website o con los dos, el AND se suplanta por OR:

Código sql:
Ver original
  1. SELECT
  2.           M.market_id, M.market_direccion. CI.ciudad_nombre, M.market_url
  3. FROM
  4.           markets M INNER JOIN combinada C ON C.comb_market_id = M.market_id
  5.           INNER JOIN ciudades CI ON C.comb_ciudad_id = CI.ciudad_id
  6.           LEFT JOIN productos P ON C.comb_prod_id = P.prod_id
  7. WHERE
  8.           P.prod_producto LIKE '%alimentos para perro%' OR
  9.           (M.market_url IS NOT NULL OR M.market_url != '') ;

Cualquier otra posibilidad, hay que estudiarla según el caso.
En ese sentido, es muy habitual crear estas sentencias en forma dinámica según el tipo de filtrado que se requiere, aunque el JOIN se mantenga.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)