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

Sigo con problemas con esta consulta... ayuda

Estas en el tema de Sigo con problemas con esta consulta... ayuda en el foro de Mysql en Foros del Web. Hola Estoy programando una especie de "motor" de búsqueda sobre una base de datos que recoge cosas como fecha, estado, usuario... Código PHP: $sql = ...
  #1 (permalink)  
Antiguo 22/09/2008, 04:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Sigo con problemas con esta consulta... ayuda

Hola

Estoy programando una especie de "motor" de búsqueda sobre una base de datos que recoge cosas como fecha, estado, usuario...

Código PHP:
$sql=mysql_query("SELECT * FROM $tabla WHERE MONTH(fecha) = $mes AND YEAR(FECHA) = $ano AND estado = '$estado' AND nombre LIKE '%$nombre%' ORDER BY fecha"$conexion); 
Los datos los recojo de un formulario (mes, año, estado y nombre)

El problema que tengo es que no puedo dejar los campos de mes y año vacíos porque me da error, y lo que yo quiero es por ejemplo poder dejar año o mes vacío para que me muestre todas las tareas de todos los meses o todos los años...

No se que puede estar fallando en esta consulta
  #2 (permalink)  
Antiguo 22/09/2008, 08:16
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Sigo con problemas con esta consulta... ayuda

Mira, esa es una MEDIA CONSULTA de Base de Datos. Una consulta de BD NO involucra código o variables de programación.

Realiza tu consulta usando línea de comando o cualquier GUI, pon exactamente lo que estas escribiendo aquí y te va a dar ERROR.

Por favor, aquí se consulta SQL y no código de programación o variables ya que el SQL puede estar bien pero las variables usadas, pueden tener valores erróneos.

NO pongas código o variables.
Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 22/09/2008, 09:11
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Sigo con problemas con esta consulta... ayuda

Perdon

Yo he probado esto con datos "reales" sin variables pero igualmetne me falla el tipo de búsqueda que quiero osea que el problema es de consulta no de programación

si dejo la consulta tal ocmo está con datos e intento buscar algo sin rellenar no me muestra nada, y se supone que me debería mostrar todo

¿En que sección se debe poner esto?
  #4 (permalink)  
Antiguo 22/09/2008, 11:35
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: Sigo con problemas con esta consulta... ayuda

¿Y has probado esto desde alguna GUI como MySQL Query Browser?, usando datos reales, al estilo:
Código sql:
Ver original
  1. SELECT *
  2. FROM tabla
  3. WHERE
  4. MONTH(fecha) = 3 AND YEAR(FECHA) = 2008 AND estado = 'xxx' AND nombre LIKE '%unonombre%'
  5. ORDER BY fecha;

Además: ¿Has verificado que tengas registros que cumplan con todos los criterios al mismo tiempo (no nos olvidemos del los AND)?
__________________
¿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 22/09/2008, 12:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sigo con problemas con esta consulta... ayuda

Tu problema, como te ha dicho Brujonic, es de programación, pues si, por ejemplo, buscas:

SELECT * FROM tabla WHERE MONTH(fecha) = 3 AND YEAR(FECHA) = 2008 AND estado = '' AND nombre LIKE '' ORDER BY fecha;

tampoco encontrarás nada, pues seguramente en estado tendrás datos en todos los campos y en nombre también. Y esa consulta es la que lanzas cuando dejas en blanco, por ejemplo, estado y nombre. No encontrarás ningún registro. Pregunta en el foro de programación de tu programa cómo hacer depender una consulta de la selección de datos en selectores, y que, en caso de no seleccionar en un selector, este no se tenga en cuenta. Verás que la respuesta es de programación y te la darán allí.
  #6 (permalink)  
Antiguo 22/09/2008, 15:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Sigo con problemas con esta consulta... ayuda

Es que el problema solo los tengo con los campos de fecha (mes y año)... porque lo que yo pretendo es que si no pongo algo en campos de mes o año no me sale nada y quiero que si no introduzco años en la variable años me muestre todos los registros de todos los años y lo mismo para mes...

Con el campo nombre por ejemplo si que funciona perfectamente el LIKE ya que si no pongo nombre me muestra todos los nombres y si pongo algo "parecido" me busca coincidencias...

No se si algun ', ; o algun signo de estos está jodiendo...

Porque las variables no están "defectuosas"...
  #7 (permalink)  
Antiguo 22/09/2008, 15:15
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Sigo con problemas con esta consulta... ayuda

Hola
Cita:
porque lo que yo pretendo es que si no pongo algo en campos de mes o año no me sale nada y quiero que si no introduzco años en la variable años me muestre todos los registros de todos los años y lo mismo para mes...
Como mencionaron es un tema de programación, lo que debes hacer mediante programación es armar tu consulta según los datos, si no existe la variable mes o año pues simplemente obvias eso dentro de tu consulta.

Ejemplo

Si no existe la variables mes y año generas esta consulta
Código sql:
Ver original
  1. SELECT *
  2.       FROM tabla
  3.       WHERE
  4.        estado = 'tu_estado' AND nombre LIKE '%unonombre%'
  5.       ORDER BY fecha;

SaLudos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #8 (permalink)  
Antiguo 23/09/2008, 07:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Sigo con problemas con esta consulta... ayuda

creo que me ha costado pero lo he comprendido...

Osea mediante programación crear algo asi como:

si mes vacio
haz consulta desechando variable mes
si año está vacio
haz consulta desechando variable año

correcto?

Edito:

Creo que mejor es

si variable mes = vacio
variable = ''
si variable año = vacio
variable = ''

Última edición por GoldFran; 23/09/2008 a las 07:07
  #9 (permalink)  
Antiguo 23/09/2008, 07:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sigo con problemas con esta consulta... ayuda

casi, pero eso pregúntalo en los foros de programación; la idea es que si no se selecciona el mes, no añades una parte de la cadena de consulta, la referida al mes, es decir, AND MONTH(fecha) = 5. Pero pregúntalo en PHP, si es ese tu programa.
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 04:16.