16. März 200421 j 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
16. März 200421 j 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.
16. März 200421 j 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:
16. März 200421 j 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
16. März 200421 j 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
16. März 200421 j 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
16. März 200421 j 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
16. März 200421 j 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
17. März 200421 j 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
17. März 200421 j 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'))
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.