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

Problema con comillas en consulta SQL

Estas en el tema de Problema con comillas en consulta SQL en el foro de Mysql en Foros del Web. Hola gente: Tengo un problemon, en mi servidor local la siguiente consulta funciona correctamente, pero al subirlo al servidor web "final" me pide que agrege ...
  #1 (permalink)  
Antiguo 29/09/2005, 22:18
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Problema con comillas en consulta SQL

Hola gente:

Tengo un problemon, en mi servidor local la siguiente consulta funciona correctamente, pero al subirlo al servidor web "final" me pide que agrege las comillas en cada SELECT que hago, lo que me esta rompiendo la cabeza desde hoy a la tarde y no logro sacar...

El codigo es:

Código PHP:
SELECT FROM `fw_futbol_posT WHERE (`id` >= (SELECT `idFROM `fw_futbol_posWHERE `equipoLIKE '%ferro%') AND `id` <= (SELECT `id` + 2 FROM `fw_futbol_posWHERE `equipoLIKE '%ferro%')) OR (`id` <= (SELECT `idFROM `fw_futbol_posWHERE `equipoLIKE '%ferro%') AND `id` >= (SELECT `id` - 2 FROM `fw_futbol_posWHERE `equipoLIKE '%ferro%')) 
Y en teoria deberia ser algo como:

Código PHP:
SELECT FROM `fw_futbol_posT WHERE (`id` >= ("SELECT `id` FROM `fw_futbol_pos` WHERE `equipo` LIKE '%ferro%'") AND `id` <= ("SELECT `id` + 2 FROM `fw_futbol_pos` WHERE `equipo` LIKE '%ferro%'")) OR (`id` <= ("SELECT `id` FROM `fw_futbol_pos` WHERE `equipo` LIKE '%ferro%'") AND `id` >= ("SELECT `id` - 2 FROM `fw_futbol_pos` WHERE `equipo` LIKE '%ferro%'")) 
El tema es que así me envia error PHP... probe usando comillas simple y en el LIKE utilizar doble comilla simple, algo asi

Código PHP:
('SELECT `id` - 2 FROM `fw_futbol_pos` WHERE `equipo` LIKE ''%ferro%'''
Pero al parecer de esta forma no se evalua...

Si alguien me ayuda se lo agradeceria...
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 30/09/2005, 00:05
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 8 meses
Puntos: 2
Esta sentencia es evidente que la tienes mal:
Código:
('SELECT `id` - 2 FROM `fw_futbol_pos` WHERE `equipo` LIKE ''%ferro%''')
no puedes usar las mismas comillas que delimitan toda la sentencia como el delimitador de los valores tipo caracter/cadena de caracteres. Y las dobles comillas no son dos caracteres ' sino que es el carácter ".
Tu sentencia, para que funcione correctamente es:
Código:
("SELECT `id` - 2 FROM `fw_futbol_pos` WHERE `equipo` LIKE '%ferro%'")
Por otro lado, piensa de nuevo tu sentencia, no parece que necesite realmente de tanto subselect para hacerse. Procura utilizar joins, que es mucho más óptimo que los subselects.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #3 (permalink)  
Antiguo 30/09/2005, 00:56
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Pues no... si te fijas puse "Y en teoria deberia ser algo como:" y utilize las comillas como tu dices, pero no funciona...

Vere como se hace con Joins, el tema es que se poco y nada de SQL... siempre hice consultas simples.
__________________
I Love Programming...
  #4 (permalink)  
Antiguo 30/09/2005, 11:22
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Vice, podrias ayudarme a pasar ese codigo con JOINS ??, estuve leyendo en mysql-hispano pero no entiendo nada :(
__________________
I Love Programming...
  #5 (permalink)  
Antiguo 30/09/2005, 14:10
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Por otro lado... creo que los subquerys solo son soportados por MySQL en la version 5.0 en adelante, así que eso puede ser el origen de tu problema.

Para los JOINS te recomiendo que busques tutoriales en la red, eso suele ser de lo mejor cubierto en ellos, así entendrás mejor lo que haces.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 30/09/2005, 15:04
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
pero en mi servidor local tengo MySQL 4.1.8 y funcionan bien los subquerys, mientras que en el servidor contratado tengo 4.0.24... seguramente esta version es demaciado vieja.

Ya busque tutoriales sobre Joins.. pero realmente no los entiendo, seguiré leyendo.
__________________
I Love Programming...
  #7 (permalink)  
Antiguo 30/09/2005, 21:09
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Bueno, para solucionar el problema de incompatibilidad tuve que hacer este "choclo" de consultas...

Código PHP:
$_SQL mysql_query("SELECT `pts` FROM `fw_futbol_pos` WHERE `equipo` LIKE '%ferro%'");
if (
$_ROW=mysql_fetch_assoc($_SQL)) { $_FPTS $_ROW[pts]; }

$_SQL mysql_query("SELECT * FROM `fw_futbol_pos` WHERE `pts` >= '$_FPTS' ORDER BY `pts` DESC");
$_FPOS 0; while($_ROW=@mysql_fetch_assoc($_SQL)) { $_FPOS++; } 

if (
$_FPOS <= 3) { $_MIN 0$_MAX 5$_VAR 1; } 
elseif (
$_FPOS <= 17) { $_MIN $_FPOS-3$_MAX 5$_VAR $_FPOS-2; }
elseif (
$_FPOS >= 18) { $_MIN $_FPOS-5$_MAX 5;  $_VAR $_FPOS-4; }
$_SQL mysql_query("SELECT `equipo`, `pts`, `pj` FROM `fw_futbol_pos` ORDER BY `pts` DESC LIMIT $_MIN,$_MAX");
while(
$_ROW=@mysql_fetch_assoc($_SQL)) {
//aca imprimo los resultados

__________________
I Love Programming...
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 18:56.