Hallo,
ich bin noch ziemlicher Neuling und habe ein kleines Problem.
Aufgabe: Herausfinden welches Auto mit bestimmten Bedingungen zu einem bestimmten Zeitpunkt verliehen werden kann.
vereinfacht:
FAHRZEUG
enthält FahrzeugID(PK)
FAHRZEUG_VERLIEHEN
enthält ID(PK) + FahrzeugID, MIETDAUER_ANFANG, MIETDAUER_ENDE
FAHRZEUG_VERLIEHEN n-->1 Fahrzeug
Jetzt habe ich eine Abfrage gebastelt:
Select F.IDFAHRZEUG, FT.NAME, FT.SCHLAFPLAETZE, ST.ORT, ST.NAME, KHF.MIETDAUER_ANFANG, KHF.MIETDAUER_ENDE from
FAHRZEUGTYP FT
INNER JOIN
FAHRZEUG F
ON
FT.IDFAHRZEUGTYP=F.FAHRZEUGTYP_IDFAHRZEUGTYP
INNER JOIN
STATION ST
ON
F.STATION_IDSTATION = ST.IDSTATION
LEFT JOIN
KUNDE_HAS_FAHRZEUG KHF
ON
F.IDFAHRZEUG = KHF.FAHRZEUG_IDFAHRZEUG
WHERE
FT.SCHLAFPLAETZE=4 and
ST.IDSTATION = 1 and not
(
(KHF.MIETDAUER_ANFANG<='01.07.2007' and
KHF.MIETDAUER_ENDE>'14.07.2007') or
(KHF.MIETDAUER_ANFANG>='01.07.2007' and
KHF.MIETDAUER_ENDE<='14.07.07') or
(KHF.MIETDAUER_ANFANG<'01.07.2007' and
(KHF.MIETDAUER_ENDE>'01.07.07' and KHF.MIETDAUER_ENDE<'14.07.2007')) or
((KHF.MIETDAUER_ANFANG>='01.07.2007'and KHF.MIETDAUER_ANFANG<='14.07.2007') and
KHF.MIETDAUER_ENDE>'14.07.2007')
);
Leider gibt er jetzt auch Fahrzeuge aus die zu diesen Zeitpunkten schon verliehen sind, weill sie zu einem früheren Zeitpunkt schoneinmal verliehen wurden, und somit einen eigenen Datensatz bilden.
Ich hoffe Sie verstehen das Problem und wissen eine Lösung.
Die Datenbankstruktur sollte möglist nicht verändert werden. Es darf nur eine SQL-Abfrage sein, keine Programmiersprache ;(
Vielen Dank
ich bin noch ziemlicher Neuling und habe ein kleines Problem.
Aufgabe: Herausfinden welches Auto mit bestimmten Bedingungen zu einem bestimmten Zeitpunkt verliehen werden kann.
vereinfacht:
FAHRZEUG
enthält FahrzeugID(PK)
FAHRZEUG_VERLIEHEN
enthält ID(PK) + FahrzeugID, MIETDAUER_ANFANG, MIETDAUER_ENDE
FAHRZEUG_VERLIEHEN n-->1 Fahrzeug
Jetzt habe ich eine Abfrage gebastelt:
Select F.IDFAHRZEUG, FT.NAME, FT.SCHLAFPLAETZE, ST.ORT, ST.NAME, KHF.MIETDAUER_ANFANG, KHF.MIETDAUER_ENDE from
FAHRZEUGTYP FT
INNER JOIN
FAHRZEUG F
ON
FT.IDFAHRZEUGTYP=F.FAHRZEUGTYP_IDFAHRZEUGTYP
INNER JOIN
STATION ST
ON
F.STATION_IDSTATION = ST.IDSTATION
LEFT JOIN
KUNDE_HAS_FAHRZEUG KHF
ON
F.IDFAHRZEUG = KHF.FAHRZEUG_IDFAHRZEUG
WHERE
FT.SCHLAFPLAETZE=4 and
ST.IDSTATION = 1 and not
(
(KHF.MIETDAUER_ANFANG<='01.07.2007' and
KHF.MIETDAUER_ENDE>'14.07.2007') or
(KHF.MIETDAUER_ANFANG>='01.07.2007' and
KHF.MIETDAUER_ENDE<='14.07.07') or
(KHF.MIETDAUER_ANFANG<'01.07.2007' and
(KHF.MIETDAUER_ENDE>'01.07.07' and KHF.MIETDAUER_ENDE<'14.07.2007')) or
((KHF.MIETDAUER_ANFANG>='01.07.2007'and KHF.MIETDAUER_ANFANG<='14.07.2007') and
KHF.MIETDAUER_ENDE>'14.07.2007')
);
Leider gibt er jetzt auch Fahrzeuge aus die zu diesen Zeitpunkten schon verliehen sind, weill sie zu einem früheren Zeitpunkt schoneinmal verliehen wurden, und somit einen eigenen Datensatz bilden.
Ich hoffe Sie verstehen das Problem und wissen eine Lösung.
Die Datenbankstruktur sollte möglist nicht verändert werden. Es darf nur eine SQL-Abfrage sein, keine Programmiersprache ;(
Vielen Dank
Comment