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

Busqueda avanzadas

Estas en el tema de Busqueda avanzadas en el foro de Mysql en Foros del Web. Buenas estoy preparando un script php para busquedas avanzadas y tengo un problema en la sentencia sql que no consigo sacar la sentencia es la ...
  #1 (permalink)  
Antiguo 14/06/2012, 16:19
 
Fecha de Ingreso: diciembre-2011
Mensajes: 50
Antigüedad: 12 años, 4 meses
Puntos: 0
Busqueda avanzadas

Buenas estoy preparando un script php para busquedas avanzadas y tengo un problema en la sentencia sql que no consigo sacar la sentencia es la siguiente

Código SQL:
Ver original
  1. SELECT e.disco, e.producto, e.titulo, e.precio
  2. FROM
  3. (SELECT MAX(p.total) AS total FROM (SELECT CASE producto WHEN "" THEN "%" ELSE "DJ LEVEL" END AS total FROM articulos) p) ot,
  4. articulos e
  5. WHERE e.producto LIKE '%ot.total%'

en la ultima linea no me saca nada al hacer referencia al '%ot.total%' he probado a concatenarlo con el concat("'","%",ot.total,"%","'") y tampoco en cambio si pongo WHERE e.producto like ot.tota pero claro ami no me interesa cojer la frase o palabra exacta si no que comprenda en alguna parte con el like '%%'

¿Que debo hacer?

Saludos y gracias por las molestias
  #2 (permalink)  
Antiguo 14/06/2012, 16:24
 
Fecha de Ingreso: diciembre-2011
Mensajes: 50
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Busqueda avanzadas

  #3 (permalink)  
Antiguo 15/06/2012, 01:23
 
Fecha de Ingreso: diciembre-2011
Mensajes: 50
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Busqueda avanzadas

¿Podeis ayudarme?

Gracias...
  #4 (permalink)  
Antiguo 15/06/2012, 04: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, 4 meses
Puntos: 2658
Respuesta: Busqueda avanzadas

¿Puedes tener paciencia? En Latinoamérica recien está amaneciendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/06/2012, 04:22
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, 4 meses
Puntos: 2658
Respuesta: Busqueda avanzadas

Código MySQL:
Ver original
  1.   e.disco,
  2.   e.producto,
  3.   e.titulo,
  4.   e.precio
  5.   (SELECT
  6.     max(p.total) total
  7.   FROM
  8.     (SELECT case producto when "" then "%" else "DJ LEVEL" END AS total
  9.     FROM articulos) p) ot,
  10. articulos e
  11. WHERE e.producto LIKE '%ot.total%'
Por empezar, es una consulta innecesariamente complcada, donde haces lo que parece un intento de JOIN, pero sin que se entienda o vea la relación que deseas lograr.
¿Podrías explicar un poco mejor qué es lo que estás tratando de obtener? Porque estoy seguro de que se debe poder escribir algo mucho mejor que eso.

Por lo demás, LIKE se usa con cadenas de texto, o campos que contienen texto, pero para usar los comodines deben ser cadenas de texto, y '%ot.total%' es una cadena que contiene la cadena "ot.total", y no el contenido de ese campo.
Para obtener la cadena resultante necesitas combinar los comodines con el contenido, no hacer lo que haces.
Código MySQL:
Ver original
  1. LIKE CONCAT('%', ot.total, '%')
__________________
¿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 15/06/2012, 11:47
 
Fecha de Ingreso: diciembre-2011
Mensajes: 50
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Busqueda avanzadas

con esta consulta lo que quiero conseguir donde ves "DJ LEVEL" dentro del CASE colocare una variable que recojera el valor del input de la web, por eso pongo cuando sea en el caso de vacio coloque un '%' y saque todo y en caso de recojer algun valor que lo rellene, ahora mismo estoy probando con producto, pero tambien le voy a meter para titulo, y precio, vamos lo que viene siendo el apartado de busqueda avanzada
  #7 (permalink)  
Antiguo 15/06/2012, 11:50
 
Fecha de Ingreso: diciembre-2011
Mensajes: 50
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Busqueda avanzadas

Código MySQL:
Ver original
  1. LIKE CONCAT('%', ot.total, '%')

Nada mas de lo mismo...

IGUALMENTE PONIENDO
Código MySQL:
Ver original
  1. WHERE e.producto LIKE CONCAT('%', 'DJ LEVEL', '%')

Lo saca perfectamente, muchas gracias!!!!!

Última edición por jarjausroy; 15/06/2012 a las 12:55

Etiquetas: php, select, sql, busquedas
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 21:44.