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

Error en consulta sql

Estas en el tema de Error en consulta sql en el foro de Mysql en Foros del Web. Hola, ¿Alguien sabe dónde está el error de esta consulta?. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT id_habitacion , nombre , descripcion , ocupacion_maxima , ...
  #1 (permalink)  
Antiguo 23/03/2014, 15:04
Avatar de Polu  
Fecha de Ingreso: febrero-2003
Mensajes: 135
Antigüedad: 21 años, 2 meses
Puntos: 0
Error en consulta sql

Hola,

¿Alguien sabe dónde está el error de esta consulta?.

Código MySQL:
Ver original
  1. SELECT id_habitacion, nombre, descripcion, ocupacion_maxima, tarifa
  2. FROM habitacion LEFT JOIN reservadas ON (habitacion.id_habitacion = reservadas.id_habitacion
  3. AND fecha_entrada >= '' AND fecha_salida <= '')
  4. WHERE ocupacion_maxima >= 0
  5. GROUP BY id_habitacion, nombre, descripcion, ocupacion_maxima, tarifa
  6. HAVING count(*) = 0 ORDER BY ocupacion_maxima, asc, tarifa desc

La he probado directamente en phpmyadmin y me tira este error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'asc, tarifa desc LIMIT 0, 30' at line 6

  #2 (permalink)  
Antiguo 23/03/2014, 15:14
 
Fecha de Ingreso: diciembre-2005
Mensajes: 65
Antigüedad: 18 años, 4 meses
Puntos: 4
Respuesta: Error en consulta sql

Donde el limit tienes una coma que sobra. A primers vista.
  #3 (permalink)  
Antiguo 23/03/2014, 15:40
Avatar de Polu  
Fecha de Ingreso: febrero-2003
Mensajes: 135
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Error en consulta sql

Hola piwy, gracias por responder.

Lo he probado y no va, estas son las tablas:

Código MySQL:
Ver original
  1. CREATE TABLE habitacion
  2. (
  3.     id_habitacion           INT UNSIGNED NOT NULL AUTO_INCREMENT,
  4.     nombre          VARCHAR(40)  NOT NULL,
  5.     descripcion     VARCHAR(250) NOT NULL,
  6.     ocupacion_maxima    SMALLINT UNSIGNED  NOT NULL,
  7.     tarifa          SMALLINT UNSIGNED  NOT NULL,
  8.     PRIMARY KEY (id_habitacion)
  9. )
  10. ;
  11.  
  12. CREATE TABLE reservadas
  13. (
  14.     id_reservas             INT UNSIGNED NOT NULL AUTO_INCREMENT,
  15.     fecha_entrada       DATE  NOT NULL,
  16.     fecha_salida            DATE NOT NULL,
  17.     id_habitacion               INT UNSIGNED  NOT NULL,
  18.     invitado                VARCHAR(80) NOT NULL,
  19.     commentario             VARCHAR(250) NOT NULL,
  20.     PRIMARY KEY (id_reservas)
  21. )
  22. ;
  #4 (permalink)  
Antiguo 23/03/2014, 15: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, 5 meses
Puntos: 2658
Respuesta: Error en consulta sql

Es un tema de orden de la query:
Código MySQL:
Ver original
  1.     id_habitacion,
  2.     nombre,
  3.     descripcion,
  4.     ocupacion_maxima,
  5.     tarifa
  6. FROM habitacion H LEFT JOIN reservadas R ON H.id_habitacion = R.id_habitacion
  7. WHERE ocupacion_maxima >= 0
  8.     AND fecha_entrada >= ''
  9.     AND fecha_salida <= ''
  10. GROUP BY id_habitacion, nombre, descripcion, ocupacion_maxima, tarifa
  11. ORDER BY ocupacion_maxima ASC, tarifa DESC

Por otro lado hay algunas cosas incorrectas en esa misma query, porque estas comparaciones no tienen ningún sentido:
Código MySQL:
Ver original
  1. AND fecha_entrada >= ''
  2.     AND fecha_salida <= ''
¿Qué se supone que representan?, porque sin duda no implica que puedas poner un espacio vacío en un capo DATE. Eso no es un dato válido.
SI el tema es que no sean nulos, es decir, que tengan una fecha, entonces no corresponde que uses LEFT JOIN, sino INNER JOIN, porque nunca sería nula la relación si hay datos en esos campos.
Y esto tiene menos sentido, porque sólo es válido si no devuelve ningún registro:
Código MySQL:
Ver original
  1. HAVING COUNT(*) = 0
__________________
¿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: join, php, 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 14:58.