Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oracle SQL*Plus: Abfrage ...

Empfohlene Antworten

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 :)

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.

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:

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

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 ;)

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

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 ;)

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

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 :)

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.