Ver Mensaje Individual
  #10 (permalink)  
Antiguo 20/06/2011, 20:31
Avatar de HackmanC
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,