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

[SOLUCIONADO] Error en consultas Sql.

Estas en el tema de Error en consultas Sql. en el foro de Mysql en Foros del Web. Hola tengo unas consultas Sqls y me dan un error porque estan mal construidas o son varias sqls. Se podrían juntar en una única Sql. ...
  #1 (permalink)  
Antiguo 24/02/2013, 15:39
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Error en consultas Sql.

Hola tengo unas consultas Sqls y me dan un error porque estan mal construidas o son varias sqls. Se podrían juntar en una única Sql. Por favor me podeis ayudar a recomponerlas?

Código:
if ( ! empty($vte)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.telefonos='$vte')
 
UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE telefonos='$vte' )
 
UNION ALL
 
(SELECT 2 as qnum,U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.telefonos='$vte')";
}
if ( ! empty($movil)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.movil='$movil')
 
UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE movil='$movil' )
 
UNION ALL
 
(SELECT 2 as qnum,U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.movil='$movil')";
}
if ( ! empty($dni)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.dni='$dni')
 
UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE dni='$dni' )
 
UNION ALL
 
(SELECT 2 as qnum,U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.dni='$dni')";
}
if ( ! empty($calle)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  B.calle like '%$calle%')

UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE calle like '%$calle%')
 
UNION ALL

(SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  D.calle like '%$calle%')";
}

if ( ! empty($ape)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.apellidos like '%$ape%')

UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE apellidos like '%$ape%')
 
UNION ALL

(SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.apellidos like '%$ape%')";
}
if ( ! empty($name)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.name like '%$name%')

UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE name like '%$name%')
 
UNION ALL

(SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.name like '%$name%')";
}
if ( ! empty($loca)) { 
$sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
 
FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  B.localidad like '%$loca%')

UNION ALL
 
(SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
 
FROM avisos WHERE localidad like '%$loca%')
 
UNION ALL

(SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
 
FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  D.localidad like '%$loca%')";
}
Gracias
  #2 (permalink)  
Antiguo 25/02/2013, 04:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Error en consultas Sql.

Intenta publicar las de manera legible (bien identadas), explica que hacen y que pretendes hacer, que errores dan ... etc tenemos intención de ayudar... pero ponlo facil.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/02/2013, 04:56
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Error en consultas Sql.

Cita:
Iniciado por quimfv Ver Mensaje
Intenta publicar las de manera legible (bien identadas), explica que hacen y que pretendes hacer, que errores dan ... etc tenemos intención de ayudar... pero ponlo facil.
Gracias, ahora mismo funciona bien si me da algún error te lo digo.
  #4 (permalink)  
Antiguo 25/02/2013, 07:12
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 consultas Sql.

Lo que te están diciendo es que el código es ilegible como lo pones.
En SQL uno tiende a escribir las consultas de una forma más estructurada, de modo que sea sencillo de recorrer de arriba a abajo.
Además estás poniendo código PHP, cosa no permitida en estos foros, y usando la etiqueta equivocada (no es CODE ni PHP, o es el Highlight SQL o es MySQL).

Minimamente habría que ponerlo así:
Código MySQL:
Ver original
  1. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  2. FROM clientes A, dir_clientes B
  3. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND A.telefonos='$vte')
  4. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  5. FROM avisos
  6. WHERE telefonos='$vte' )
  7. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  8. FROM usuarios U, dir_usuarios D
  9. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND U.telefonos='$vte');
  10.  
  11. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  12. FROM clientes A, dir_clientes B
  13. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND A.movil='$movil')
  14. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  15. FROM avisos
  16. WHERE movil='$movil' )
  17. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  18. FROM usuarios U, dir_usuarios D
  19. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND U.movil='$movil');
  20.  
  21. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  22. FROM clientes A, dir_clientes B
  23. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND A.dni='$dni')
  24. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  25. FROM avisos
  26. WHERE dni='$dni' )
  27. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  28. FROM usuarios U, dir_usuarios D
  29. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND U.dni='$dni');
  30.  
  31. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  32. FROM clientes A, dir_clientes B
  33. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND B.calle like '%$calle%')
  34. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  35. FROM avisos
  36. WHERE calle like '%$calle%')
  37. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  38. FROM usuarios U, dir_usuarios D
  39. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND D.calle like '%$calle%');
  40.  
  41. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  42. FROM clientes A, dir_clientes B
  43. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND A.apellidos like '%$ape%')
  44. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  45. FROM avisos
  46. WHERE apellidos like '%$ape%')
  47. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  48. FROM usuarios U, dir_usuarios D
  49. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND U.apellidos like '%$ape%');
  50.  
  51. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  52. FROM clientes A, dir_clientes B
  53. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND A.name like '%$name%')
  54. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  55. FROM avisos
  56. WHERE name like '%$name%')
  57. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  58. FROM usuarios U, dir_usuarios D
  59. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND U.name like '%$name%');
  60.  
  61. (SELECT 0 qnum, A.id_aviso, A.telefonos, A.telefonos3, A.movil, A.dni, A.name, A.apellidos, B.localidad, B.calle
  62. FROM clientes A, dir_clientes B
  63. WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND B.localidad like '%$loca%')
  64. (SELECT 1 qnum, id_aviso, telefonos, telefonos3, movil, dni, name, apellidos, localidad, calle
  65. FROM avisos
  66. WHERE localidad like '%$loca%')
  67. (SELECT 2 qnum, U.id_aviso, U.telefonos, U.telefonos3, U.movil, U.dni, U.name, U.apellidos, D.localidad, D.calle
  68. FROM usuarios U, dir_usuarios D
  69. WHERE U.id_aviso=D.id_aviso AND D.calle != ''AND D.localidad like '%$loca%');

Por otro lado, a nivel de implementación, te estás complicando la vida.
¿Para qué escribir tantas veces la misma consulta que sólo cambia un determinado parámetro en cada una?
Es más sencillo hacer una sola consulta y determinar qué contendrá el parámetro a agregar, y sólo ese segmento. De ese modo simplificarías el asunto.
Creo que luego te lo agregaré en el post de PHP...

Hay algunso detalles más, pero esos los veremos después.
__________________
¿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; 25/02/2013 a las 07:21
  #5 (permalink)  
Antiguo 25/02/2013, 07:34
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Error en consultas Sql.

Cita:
Iniciado por gnzsoloyo Ver Mensaje

Por otro lado, a nivel de implementación, te estás complicando la vida.
¿Para qué escribir tantas veces la misma consulta que sólo cambia un determinado parámetro en cada una?
Es más sencillo hacer una sola consulta y determinar qué contendrá el parámetro a agregar, y sólo ese segmento. De ese modo simplificarías el asunto.
Gracias, es precisamente lo que quisiera hacer si se puede una única consulta.
Un saludo

Etiquetas: select, sql
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 05:24.