Foros del Web » Programando para Internet » PHP »

consulta que funciona en servidor local pero no el remoto

Estas en el tema de consulta que funciona en servidor local pero no el remoto en el foro de PHP en Foros del Web. tengo esta consulta mysql que cuando la hago de manera local me funciona a la perfeccion, pero cuando la hago desde el servidor remoto no ...
  #1 (permalink)  
Antiguo 04/04/2013, 07:07
 
Fecha de Ingreso: abril-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
consulta que funciona en servidor local pero no el remoto

tengo esta consulta mysql que cuando la hago de manera local me funciona a la perfeccion, pero cuando la hago desde el servidor remoto no me funciona

select * from unidad_victimas.notificaciones left join unidad_victimas.victimas on (victimas.documento = notificaciones.identificacion) where notificaciones.resolucion='$resolucion' or notificaciones.identificacion='$documento' or notificaciones.descripcion='$descripcion' or victimas.primer_nombre='$primer_nombre' or victimas.segundo_nombre='$segundo_nombre' or victimas.primer_apellido='$primer_apellido' or victimas.segundo_apellido='$segundo_apellido' or victimas.vereda_declarante='$vereda' or victimas.tipo_documento='$tipo_documento' or notificaciones.guia='$guia' or notificaciones.tipo_notificacion='$tipo_notificaci on' or notificaciones.tramitador='$tramitador' or victimas.departamento_declarante='$departamentos_c ont' order by primer_apellido

esto te permite hacer una consulta dando un valor desde cualquiera de los campos alli pedidos si por ejemplo el documento es '123', como es un valor unico deberia arrojar un solo resultado, lo cual de manera local hacer perfectamente, pero cuando lo ensayo en el servidor remoto me devuelve todos los registros de la tabla
  #2 (permalink)  
Antiguo 04/04/2013, 07:59
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: consulta que funciona en servidor local pero no el remoto

Es completamente razonable que te devuelva todo, porque eso es precisamente lo que hace el LEFT JOIN: Devolver todo lo de la tabla derecha, tenga o no relación con la tabla izquierda.
Pero además, tu estás pidiendo que te devuelva todo aquello que coincida con al menos uno de los criterios del WHERE, ya que todas las condiciones están definidas como OR...

En definitiva, esa consulta no es buena.
Si lo que quieres es darle condiciones dinámicas, de modo tal que puedas poner un sólo parámetro o más de uno, y te responda en base a eso, es mejor que los parámetros del WHERE los vayas agregando dinámicamente, pero no que sean fijos. Eso requiere que valides uno a uno los datos ingresados y que vayas agregando la condición ingresada para esa sola ejecución.
¿Se entiende?

Como sugerencia...
1) No uses LEFT JOIN a menos que eso sea lo que realmente necesitas. Usa INNER JOIN.
2) No uses paréntesis por que si. Generan cambios en el parseo, en especial en el FROM.
3) Usa alias. La consulta como está es muy difícil de leer por exceso de nombres:
Código SQL:
Ver original
  1. SELECT   *
  2.     FROM notificaciones N LEFT JOIN victimas V
  3.          ON n.identificacion = V.documento =
  4.    WHERE N.resolucion = '$resolucion'
  5.       OR N.identificacion = '$documento'
  6.       OR N.descripcion = '$descripcion'
  7.       OR V.primer_nombre = '$primer_nombre'
  8.       OR V.segundo_nombre = '$segundo_nombre'
  9.       OR V.primer_apellido = '$primer_apellido'
  10.       OR V.segundo_apellido = '$segundo_apellido'
  11.       OR V.vereda_declarante = '$vereda'
  12.       OR V.tipo_documento = '$tipo_documento'
  13.       OR N.guia = '$guia'
  14.       OR N.tipo_notificacion = '$tipo_notificacion'
  15.       OR N.tramitador = '$tramitador'
  16.       OR V.departamento_declarante = '$departamentos_cont'
  17. ORDER BY primer_apellido
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: local, mysql, registro, remoto, select, servidor, tabla
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 12:43.