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

Como hago para crear una csnulta con tres parametros

Estas en el tema de Como hago para crear una csnulta con tres parametros en el foro de Mysql en Foros del Web. Amigos, hola como estan??, bueno mi consulta va dirigida a, como hacer una busqueda a la bd Mysql seleccionando tres diferentes parametros, ejemplo: quisiera buscar ...
  #1 (permalink)  
Antiguo 22/09/2009, 10:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Como hago para crear una csnulta con tres parametros

Amigos,

hola como estan??,

bueno mi consulta va dirigida a, como hacer una busqueda a la bd Mysql seleccionando tres diferentes parametros, ejemplo:

quisiera buscar negocios que coincidan con:

ciudad - alimentos para perro - que tengan web

com hacer esa consulta??

Gracias y espero me puedan ayudar
  #2 (permalink)  
Antiguo 22/09/2009, 10:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como hago para crear una csnulta con tres parametros

Tema trasladado desde PHP
  #3 (permalink)  
Antiguo 22/09/2009, 11:18
Avatar de 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

¿Cómo es la estructura de las tablas involucradas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 22/09/2009, 11:57
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hago para crear una csnulta con tres parametros

las estructuras son:

tabla ciudades
ciudad_id
ciudad_nombre



tabla productos
prod_id
prod_producto



tabla markets
market_id
market_direccion
market_telefono
market_url


tabla combinada
comb_id
comb_market_id
comb_ciudad_id
comb_prod_id
  #5 (permalink)  
Antiguo 22/09/2009, 12:13
Avatar de 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

Sería algo así:
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;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 22/09/2009, 13:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hago para crear una csnulta con tres parametros

excelente propuesta.

Pero si elijiesen solamente alimentos para perros y no url, me daria algun resultado??

es decir el formulario tiene 3 campos, ciudad - producto - sitios con url

aunque solamente elija ciudad, mostraria todos los markets de esa ciudad con esta consulta??
  #7 (permalink)  
Antiguo 22/09/2009, 13:47
Avatar de 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)
  #8 (permalink)  
Antiguo 22/09/2009, 13:51
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hago para crear una csnulta con tres parametros

se te agradece, pero me podrias explicar el porue de los parentesis??
  #9 (permalink)  
Antiguo 22/09/2009, 14:02
Avatar de 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

Para que ambas condiciones se consideren como una unidad al usar AND. De lo contrario podría dar resultados erroneos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 22/09/2009, 14:05
 
Fecha de Ingreso: diciembre-2008
Mensajes: 454
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Como hago para crear una csnulta con tres parametros

excelente, muchisimas gracias, barbara tu respuesta

saludos
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 10:29.