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

error en php y mysql

Estas en el tema de error en php y mysql en el foro de Mysql en Foros del Web. hola manes como estan... gusto de darme otra vuelta por aqui xD bueno mi problema es este... ejecuto una consulta de mysql y me manda ...
  #1 (permalink)  
Antiguo 11/03/2009, 23:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 15
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación error en php y mysql

hola manes como estan... gusto de darme otra vuelta por aqui xD bueno mi problema es este... ejecuto una consulta de mysql y me manda este mensaje

mi sentencia es

SELECT *,IFNULL((temp.total*temp.porcentaje/100),0) AS cant_descuento, (temp.total - IFNULL((temp.total*temp.porcentaje/100),0)) AS importe FROM (SELECT recibos_a.id_reciboa, recibos_a.id_clinica, recibos_a.folio, recibos_a.activo, clinicas.prefijo, UNIX_TIMESTAMP(recibos_a.fecha) AS fecha, pacientes.nombre_paciente,pacientes.apellidos_paci ente, operadores.nombre_operador,operadores.apellidos AS apellidos_operador, materias.nombre_materia, recibos_a.id_usuario, descuentos.nombre_descuento, recibos_a.porcentaje, usuarios.nombre_usuario, (SELECT SUM(detallado_a.cantidad * detallado_a.precio_unitario) as suma FROM detallado_a GROUP BY detallado_a.id_reciboa HAVING detallado_a.id_reciboa = recibos_a.id_reciboa) AS total FROM recibos_a LEFT JOIN usuarios ON recibos_a.autorizo = usuarios.id_usuario INNER JOIN clinicas ON recibos_a.id_clinica = clinicas.id_clinica INNER JOIN pacientes ON recibos_a.id_paciente = pacientes.id_paciente INNER JOIN operadores ON recibos_a.id_operador = operadores.id_operador INNER JOIN materias ON recibos_a.id_materia = materias.id_materia LEFT JOIN descuentos ON recibos_a.id_descuento = descuentos.id_descuento) AS temp WHERE fecha > 1236751200 AND fecha < 1236834000 AND id_clinica = 1 AND id_usuario = 10

SHOW KEYS FROM

MySQL ha dicho: Documentación
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

y ps no se a que se deba :S ya le intente moviendo a lo indices
  #2 (permalink)  
Antiguo 11/03/2009, 23:43
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: error en php y mysql

Los mas aconsejable, es siempre que publiques tu codigo... o parte de este, para ayudarte con mas exactitud.
  #3 (permalink)  
Antiguo 12/03/2009, 04:24
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: error en php y mysql

Esto es lo que has posteado:
Código sql:
Ver original
  1. SELECT
  2.   *,
  3.   IFNULL((temp.total*temp.porcentaje/100),0) AS cant_descuento,
  4.   (temp.total - IFNULL((temp.total*temp.porcentaje/100),0)) AS importe
  5. FROM
  6.   (SELECT
  7.     recibos_a.id_reciboa,
  8.     recibos_a.id_clinica,
  9.     recibos_a.folio,
  10.     recibos_a.activo,
  11.     clinicas.prefijo,
  12.     UNIX_TIMESTAMP(recibos_a.fecha) AS fecha,
  13.     pacientes.nombre_paciente,
  14.     pacientes.apellidos_paci ente,
  15.     operadores.nombre_operador,
  16.     operadores.apellidos AS apellidos_operador,
  17.     materias.nombre_materia,
  18.     recibos_a.id_usuario,
  19.     descuentos.nombre_descuento,
  20.     recibos_a.porcentaje,
  21.     usuarios.nombre_usuario,
  22.     (SELECT
  23.       SUM(detallado_a.cantidad * detallado_a.precio_unitario) AS suma
  24.     FROM detallado_a
  25.     GROUP BY detallado_a.id_reciboa
  26.     HAVING detallado_a.id_reciboa = recibos_a.id_reciboa)AS total
  27.   FROM recibos_a LEFT JOIN usuarios ON recibos_a.autorizo = usuarios.id_usuario
  28.     INNER JOIN clinicas ON recibos_a.id_clinica = clinicas.id_clinica
  29.     INNER JOIN pacientes ON recibos_a.id_paciente = pacientes.id_paciente
  30.     INNER JOIN operadores ON recibos_a.id_operador = operadores.id_operador
  31.     INNER JOIN materias ON recibos_a.id_materia = materias.id_materia
  32.     LEFT JOIN descuentos ON recibos_a.id_descuento = descuentos.id_descuento) AS temp
  33.   WHERE fecha > 1236751200 AND fecha < 1236834000 AND id_clinica = 1 AND id_usuario = 10;
A primera vista tiene tres problemas:
1) el campo pacientes.apellidos_paci ente tiene un espacio intermedio entre la i y la e. Eso pued ecausar problemas.
2) El FROM exterior no está cerrado y como tabla derivada, no tiene el alias que le corresponde.
3) Un problema final que yo puedo prever es que existen demasiados INNER JOIN y LEFT JOIN definidos para la misma subconsulta. Eso puede tornarla ineficiente. Deberías estudiar si puedes hacer grupos de subconsultas que luego se relacionen. De esa forma vas depurando por niveles de selectividad y no cruzando todo con todo, sino lo que realmente se relaciona.
Puede mejorar la performance de la consulta...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 12/03/2009 a las 04:30
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 13:27.