Zum Inhalt springen

Oracle SQL*Plus: Abfrage ...


DerMatze

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...