empieza a debuggear tu codigo, seguro que con esta condicion no te muestra dicha propiedad?
Código SQL:
Ver originalSELECT
propiedad.codigo_propiedad,
propiedad_reserva.START,
propiedad_reserva.END
/*,propiedad_tipo.nombre as tipo,
propiedad_categoria.nombre as categoria,
regiones.region_ordinal,
regiones.region_nombre,
provincia.provincia_nombre as provincia,
comunas.comuna_nombre as comuna,
propiedad_reserva.start,
propiedad_reserva.end*/
FROM propiedad
INNER JOIN propiedad_tipo ON propiedad.propiedad_tipo_id =
propiedad_tipo.id
LEFT OUTER JOIN propiedad_reserva ON propiedad.id =
propiedad_reserva.propiedad_id
INNER JOIN propiedad_categoria ON propiedad.categoria =
propiedad_categoria.id
INNER JOIN regiones ON propiedad.region = regiones.region_id
INNER JOIN provincia ON propiedad.provincia = provincia.provincia_id
INNER JOIN comunas ON propiedad.comuna = comunas.comuna_id
WHERE
NOT EXISTS (SELECT * FROM propiedad_reserva WHERE propiedad_reserva.start>= '2017-10-3' AND propiedad_reserva.END <= '2017-10-7')
Ahora estas haciendo un left outer en la tabla de propiedad reserva, usando el id_propiedad, si la propiedad tiene 2 valores en tu tabla va a aparecer estas 2 veces aunque en el where le pongas que no te tome la segunda, porque? bueno al poner el where le estas diciendo que quite la propiedad que tiene el rango, pero la otra no la quitas por eso sigue apareciendo.
Podrias hacer el left outer con esto:
Código SQL:
Ver originalSELECT
propiedad.codigo_propiedad,
propiedad_reserva.START,
propiedad_reserva.END
/*,propiedad_tipo.nombre as tipo,
propiedad_categoria.nombre as categoria,
regiones.region_ordinal,
regiones.region_nombre,
provincia.provincia_nombre as provincia,
comunas.comuna_nombre as comuna,
propiedad_reserva.start,
propiedad_reserva.end*/
FROM propiedad
INNER JOIN propiedad_tipo ON propiedad.propiedad_tipo_id =
propiedad_tipo.id
LEFT OUTER JOIN
(SELECT id_propiedad, reserva_end, reserva_start FROM propiedad_reserva WHERE propiedad_reserva.start>= '2017-10-3' AND propiedad_reserva.END <= '2017-10-7')
propiedad_reserva ON propiedad.id <>
propiedad_reserva.propiedad_id
INNER JOIN propiedad_categoria ON propiedad.categoria =
propiedad_categoria.id
INNER JOIN regiones ON propiedad.region = regiones.region_id
INNER JOIN provincia ON propiedad.provincia = provincia.provincia_id
INNER JOIN comunas ON propiedad.comuna = comunas.comuna_id
Aqui si encuentra el 157 en el rango de fechas, no lo va a incluir en el join, prueba y comenta