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

Sql y php (duda)

Estas en el tema de Sql y php (duda) en el foro de Bases de Datos General en Foros del Web. Hola, necesito hacer un select con esas condiciones, pero me da error: SELECT a.ciudad, a.hora, a.rut, ciudad.descripcion, hora.descripcion FROM reserva a INNER JOIN (SELECT ciudad.descripcion ...
  #1 (permalink)  
Antiguo 20/06/2011, 19:45
 
Fecha de Ingreso: junio-2011
Mensajes: 27
Antigüedad: 12 años, 10 meses
Puntos: 1
Pregunta Sql y php (duda)

Hola, necesito hacer un select con esas condiciones, pero me da error:

SELECT a.ciudad, a.hora, a.rut, ciudad.descripcion, hora.descripcion
FROM reserva a
INNER JOIN (SELECT ciudad.descripcion FROM ciudad WHERE a.ciudad = ciudad.descripcion) ciudad
INNER JOIN (SELECT hora.descripcion FROM hora WHERE a.hora = hora.descripcion) hora


ALGUIEN ME AYUDA PORFAVOR
  #2 (permalink)  
Antiguo 20/06/2011, 19:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Sql y php (duda)

cual es el error que te da?? nos lo puedes indicar?? porque de adivinar esta un poco dificil, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 20/06/2011, 19:56
 
Fecha de Ingreso: junio-2011
Mensajes: 27
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Sql y php (duda)

MySQL ha dicho:

#1054 - Unknown column 'a.ciudad' in 'where clause'

es ese
  #4 (permalink)  
Antiguo 20/06/2011, 19:59
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Sql y php (duda)

sencillo no tienes un campo ciudad en la tabla reserva que fue la que le colocaste el alias de a, revisa bien los campos de esta tabla y seguro arreglaras el error
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 20/06/2011, 19:59
 
Fecha de Ingreso: febrero-2010
Ubicación: Republica Dominicana
Mensajes: 53
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Sql y php (duda)

Porque estas colocando a.ciudad etc?

no veo eso bien
  #6 (permalink)  
Antiguo 20/06/2011, 20:02
 
Fecha de Ingreso: junio-2011
Mensajes: 27
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Sql y php (duda)

Si tengo el campo ciudad en la tabla reserva, es un valor numerico (INT)
  #7 (permalink)  
Antiguo 20/06/2011, 20:03
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Sql y php (duda)

eso se llama alias, investiga un poco el termino , saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 20/06/2011, 20:04
 
Fecha de Ingreso: febrero-2010
Ubicación: Republica Dominicana
Mensajes: 53
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Sql y php (duda)

ok, pues elimina el prefijo a. y solo coloca los nombres de los campos

ciudad, descripcion etc...
  #9 (permalink)  
Antiguo 20/06/2011, 20:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Sql y php (duda)

Cita:
Iniciado por bfaragorn Ver Mensaje
Si tengo el campo ciudad en la tabla reserva, es un valor numerico (INT)
eso si esta extraño porque el error que te indica el manejador dice lo contrario
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 20/06/2011, 20:31
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Sql y php (duda)

Hola,

Cita:
Iniciado por bfaragorn Ver Mensaje
SELECT a.ciudad, a.hora, a.rut, ciudad.descripcion, hora.descripcion
FROM reserva a
INNER JOIN (SELECT ciudad.descripcion FROM ciudad WHERE a.ciudad = ciudad.descripcion) ciudad
INNER JOIN (SELECT hora.descripcion FROM hora WHERE a.hora = hora.descripcion) hora
Cita:
Iniciado por bfaragorn Ver Mensaje
MySQL ha dicho:

#1054 - Unknown column 'a.ciudad' in 'where clause'

es ese
No se puede usar una subconsulta correlacionada en el inner join. Primero porque no son necesarias, no tiene lógica extraer un conjunto de registros dependientes del resultado externo, para unirlos (join) con el resultado interno, si ese es el objetivo primordial del join y segundo que le hace falta la palabra ON a la cláusula JOIN.

En el mejor de los casos posiblemente se podría escribir así:

Código MySQL:
Ver original
  1. SELECT a.ciudad, a.hora, a.rut, ciudad.descripcion, hora.descripcion FROM reserva a
  2. INNER JOIN (SELECT ciudad.descripcion FROM ciudad) ciudad ON a.ciudad = ciudad.descripcion
  3. INNER JOIN (SELECT hora.descripcion FROM hora) hora ON a.hora = hora.descripcion;

Aunque evidentemente pierde sentido la subconsulta, así que redunda en esto:
Código MySQL:
Ver original
  1. SELECT a.ciudad, a.hora, a.rut, ciudad.descripcion, hora.descripcion FROM reserva a
  2. INNER JOIN ciudad ON a.ciudad = ciudad.descripcion
  3. INNER JOIN hora ON a.hora = hora.descripcion;
Suponiendo que 'a.ciudad = ciudad.descripcion' es correcto al intentar hacer una comparación entre un campo INT y un VARCHAR, por un motivo desconocido.

Saludos,
  #11 (permalink)  
Antiguo 20/06/2011, 21:59
 
Fecha de Ingreso: junio-2011
Mensajes: 27
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Sql y php (duda)

MUCHAS GRACIAS POR TU RESPUESTA HackmanC.

FUNCIONANDO OK.

Etiquetas: php, 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 08:12.