DerMatze Geschrieben 16. März 2004 Teilen Geschrieben 16. März 2004 Hallo zusammen. Folgendes ist gegeben: Ora9 DB mit Tabelle Room_t SQL> desc room_t Name Null? Type ------------------------------- -------- ---- ID NOT NULL NUMBER(2) NAME NOT NULL VARCHAR2(25) LOCATION VARCHAR2(60) PLACES NUMBER(2) PHONE VARCHAR2(20) ADDITIONAL_INFORMATION VARCHAR2(90) und booking_t SQL> desc booking_t Name Null? Type ------------------------------- -------- ---- ID NUMBER(4) ROOMID NUMBER(2) BOOKERID VARCHAR2(7) BOOKINGORDERERID VARCHAR2(7) BOOKINGORDERERDEPARTMENT VARCHAR2(20) BOOKINGFROM DATE BOOKINGTO DATE PLACES NUMBER(2) Hintergrund: Raumbuchungssystem: Tabelle room_t haelt alle Raeme inkl. Infos, Tabelle booking_t, speichert die Buchungen. Gegeben: Datum, Uhrzeit Gesucht: alle Raeume, die an dem angegebenen Datum zwar eine Buchung haben, aber nicht an der Uhrzeit. Zusaetzlich brauche ich noch die entsprechenden Buchungen an dem betreffenden Tag thx in advance Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth_Zeus Geschrieben 16. März 2004 Teilen Geschrieben 16. März 2004 Abhängig vom Dateformat würde ich sagen: select room_t.name from room_t, booking_t where Left(booking_t.bookingfrom,10) = '2004-03-16' and booking_t.Bezugspalte = room_t.Bezugspalte bringt dir alle Räume, die am 16.03.2004 gebucht sind, unabhängig von der Uhrzeit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 16. März 2004 Autor Teilen Geschrieben 16. März 2004 Original geschrieben von Darth_Zeus Abhängig vom Dateformat würde ich sagen: select room_t.name from room_t, booking_t where Left(booking_t.bookingfrom,10) = '2004-03-16' and booking_t.Bezugspalte = room_t.Bezugspalte bringt dir alle Räume, die am 16.03.2004 gebucht sind, unabhängig von der Uhrzeit. Hmm, ich wollte eigentlich nich mit Strings arbeiten. Aber ich habe ein anderes Prob: BOOKINGFROM is gespeichert im Format 'DD.MM.YYYY HH24.MI' Wenn ich jetzt folgendes mache: select * from booking_t where bookingfrom = to_date('16.03.2004', 'DD.MM.YYYY') findet SQL nichts, selbst mit select * from booking_t where to_date(bookingfrom, 'DD.MM.YYYY') = to_date('16.03.2004', 'DD.MM.YYYY')komme ich zu keinem Ergebnis. Gibt es eine Moeglichkeit das Datum aus der Tabelle so umzuformatieren, um nach dem Tag abzupruefen ? :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 16. März 2004 Teilen Geschrieben 16. März 2004 hi, auch wenn du nicht mit strings arbeiten möchtest (wieso eigentlich?) würde ich es so machen:select * from booking_t where to_char(bookingfrom, 'DD.MM.YYYY') = '16.03.2004' and to_char(bookingfrom, 'HH24.MI.SS') <> '12:00:00' sollte alles vom 16.03.2004 liefern was nicht um 12:00:00 h gebucht wurde... hth Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 16. März 2004 Autor Teilen Geschrieben 16. März 2004 Original geschrieben von Peregrin hi, auch wenn du nicht mit strings arbeiten möchtest (wieso eigentlich?) würde ich es so machen:select * from booking_t where to_char(bookingfrom, 'DD.MM.YYYY') = '16.03.2004' and to_char(bookingfrom, 'HH24.MI.SS') <> '12:00:00' sollte alles vom 16.03.2004 liefern was nicht um 12:00:00 h gebucht wurde... hth Danke, funzt Warum keine Strings ... weil ich in dem Prog sehr viel mit Zeitpunkten (bookingfrom, bookingto) arbeite, und sowohl VB.Net (Client) und Oracle dieses Zeitpunktsystem unterstuetzen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
King-Chaos Geschrieben 16. März 2004 Teilen Geschrieben 16. März 2004 Tach, blödes Problem aber nach ein wenig testen hab ich die Lösung gefunden, gelle Matze :marine select * from booking_t where to_date(bookingfrom, 'DD.MM.YYYY') like to_date('16.03.2004', 'DD.MM.YYYY') Lag anscheinend an den "=", mit like geht es ohne Probleme. Wobei man hier auch wieder sagen muss, dass SQL-Navigator auch die 1. Abfrage schon ohne Probleme macht, nur SQL*Plus nicht... Greetz, King-Chaos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 16. März 2004 Autor Teilen Geschrieben 16. März 2004 Naechstes Prob. Das gegebene bleibt (siehe Eingangspost). Nun will ich alle Raeme haben, fuer die an einem bestimmten Tag keine Buchung vorliegt. Wichtig ist, dass es derzeit nicht fuer jeden Raum eine Buchung gibt, daher ein LEFT JOIN: SELECT distinct a.ID, a.NAME, a.LOCATION FROM ROOM_T a LEFT JOIN BOOKING_T b ON a.ID = b.ROOMID WHERE a.NAME LIKE '%' AND a.PLACES >= 1 AND TO_CHAR(BOOKINGFROM, 'DD.Mon.YYYY') <> '16.Mar.2004' Leider gibt er mir nur die Raeume fuer die eine Buchung in booking_t vorliegt :confused: King-Chaos: Du hattest ja auch meine DB vor Augen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 16. März 2004 Teilen Geschrieben 16. März 2004 Hallo, wenn du nur den Tag haben willst ohne Zeit, würde ich lieber die mit trunc arbeiten als mit to_char (so von wegen keine Strings): anstatt: TO_CHAR(BOOKINGFROM, 'DD.Mon.YYYY') das hier: Trunc(BOOKINGFROM) = to_date('16.03.2004', 'DD.MM.YYYY') Grüße mme Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 17. März 2004 Autor Teilen Geschrieben 17. März 2004 Original geschrieben von mme Trunc(BOOKINGFROM) = to_date('16.03.2004', 'DD.MM.YYYY') Fein, das laeuft, hilft mir bei meinem Prob oben aber nicht Trotzdem danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 17. März 2004 Autor Teilen Geschrieben 17. März 2004 Original geschrieben von DerMatze Naechstes Prob. Das gegebene bleibt (siehe Eingangspost). Nun will ich alle Raeme haben, fuer die an einem bestimmten Tag keine Buchung vorliegt. Wichtig ist, dass es derzeit nicht fuer jeden Raum eine Buchung gibt, daher ein LEFT JOIN: Leider gibt er mir nur die Raeume fuer die eine Buchung in booking_t vorliegt :confused: So, Problem geloest. Ich verwende ein Subselect, dass alle verwendeten Room-ID's auf booking_t fuer einen Tag heraussucht:SELECT distinct ID, NAME, LOCATION FROM ROOM_T WHERE NAME LIKE '%' AND PLACES >= 1 AND ID NOT IN (SELECT distinct ROOMID FROM BOOKING_T WHERE TRUNC(BOOKINGFROM) = TO_DATE('17.Mar.2004', 'DD.Mon.YYYY')) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.