MySQL Select und Insert in Java

Diskutiere Select und Insert in Java im Datenbankprogrammierung Forum; Hallo ihr lieben und ich hoffe ihr könnt mir bei meinem Problem helfen. Ich habe eine Datenbank (liste nur das auf was derzeit mein problem...

  1. Anesa
    Anesa Neues Mitglied
    Hallo ihr lieben und ich hoffe ihr könnt mir bei meinem Problem helfen.
    Ich habe eine Datenbank (liste nur das auf was derzeit mein problem betrifft)
    Es geht um ein Hotel.
    Ich habe eine Tabelle Zimmer mit den Spalten Zimmer_ID, Bezeichnung und Art.
    Unter Art sind "einzel" und "doppel" Zimmer, die nötige anzahl an den jeweiligen Zimmern sind in der Datenbank schon vorhanden.
    Die zweite Tabelle ist buchung. Dort sind die Spalten FK_Zimmer_ID mit verknüpfung zur Zimmer_ID, Anreise und Abreise als Date.

    Nun möchte ich in meinem Java-Code ein Select bzw. Insert schreiben das in meiner DB schaut in buchungen welche Zimmer belegt sind um dann die passenden einzel bzw. doppelzimmer zu buchen die gerade gebraucht werden.

    Als Bsp.: ein Gast bucht 1 einzel und 1 doppelzimmer, in DB schauen was frei ist um dann 1 einzel und ein doppelzimmer zu buchen.
    Versuche schon seit ein paar Tagen mich daran aber bekomme es irgendwie nicht hin.
    Ich hoffe sehr das ihr mir bei meinem Problem helfen könnt.
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. mihe7
    mihe7 Bekanntes Mitglied
    Das sind zwei Buchungsanfragen, wobei der Zeitraum fehlt. Je Anfrage gibt es drei Parameter: die gewünschte Anreise, Abreise, und Zimmerart (:g_anreise, ...)

    Code (SQL):

    SELECT * FROM zimmer
     WHERE art = :g_art
       AND zimmer_id NOT IN (
        SELECT zimmer_id FROM buchung
         WHERE :g_anreise < abreise
           AND :g_abreise >= anreise
        )
     
    Das packst Du in ein PreparedStatement, setzt die Parameter, führst die Abfrage aus und kannst dann über ein ResultSet mit den freien Zimmern iterieren.
     
  4. Dukel
    Dukel Aktives Mitglied
    Was passiert, wenn das Hotel Mehrbettzimmer (drei Betten oder noch mehr) baut?
    Ich würde das eher als Int machen und nicht Art nennen.
     
  5. mihe7
    mihe7 Bekanntes Mitglied
    @Dukel man kann die Zimmerart nicht aus der Zahl der Betten ableiten. Beispiel: Zweibettzimmer vs. Doppelzimmer
     
  6. Dimax
    Dimax Mitglied
    Code (Text):

    DELIMITER //

    CREATE FUNCTION FindeZimmer( :g_art VARCHAR  )
    RETURNS INT

    BEGIN

       DECLARE zimmer_id  INT;

     SET zimmer_id =  
    (SELECT zimmer_id FROM zimmer
     WHERE art = :g_art
       AND zimmer_id NOT IN (
        SELECT zimmer_id FROM buchung
         WHERE :g_anreise < abreise
           AND :g_abreise >= anreise
        ))

       RETURN zimmer_id;

    END; //

    DELIMITER ;

    INSERT into buchung values (FindeZimmer(:g_art),usw.....
     
     
  7. mihe7
    mihe7 Bekanntes Mitglied
    @Dimax gibt das nicht ein Problem, wenn es mehr als ein freies Zimmer gibt?
     
  8. Thallius
    Thallius Bekanntes Mitglied
    Ausserdem würde ich dringend empfehlen statt dem subselect doch lieber mit join zu arbeiten...
     
  9. mihe7
    mihe7 Bekanntes Mitglied
    Du meinst einen outer join und Prüfung auf null?
     
  10. Dimax
    Dimax Mitglied
    mihe7 da gibt es mehr Probleme als Lösungen,klar man muss die Funktion anpassen,wollte nur die Richtung zeigen)
     
  11. Neumi5694
    Neumi5694 Mitglied
    Also bei großen Tabellen würde ich dem widersprechen, es sei denn, dass MySql die Abfrage noch optimiert und die Bedingungen vor dem join ausführt.
     
  12. Wenn du Java lernen möchtest, empfehlen wir dir dieses Online-Training hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Select und Insert in Java - Ähnliche Themen

Hibernate und Aufruf von Funktion SELECT last_insert_rowid()
Hibernate und Aufruf von Funktion SELECT last_insert_rowid() im Forum Datenbankprogrammierung
insert .... values("test1",select test2 from foo)
insert .... values("test1",select test2 from foo) im Forum Datenbankprogrammierung
SELECT ja - INSERT nein (MySQL)
SELECT ja - INSERT nein (MySQL) im Forum Datenbankprogrammierung
Db select * und Insert schlagen fehl
Db select * und Insert schlagen fehl im Forum Datenbankprogrammierung
ODBC Insert und gleich danach Selects
ODBC Insert und gleich danach Selects im Forum Datenbankprogrammierung
Thema: Select und Insert in Java