MySQL Select und Insert in Java

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.
 

mihe7

Top Contributor
ein Gast bucht 1 einzel und 1 doppelzimmer
Das sind zwei Buchungsanfragen, wobei der Zeitraum fehlt. Je Anfrage gibt es drei Parameter: die gewünschte Anreise, Abreise, und Zimmerart (:g_anreise, ...)

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.
 

Dimax

Top Contributor
Code:
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.....
 

mihe7

Top Contributor
Ich musste vor kurzem feststellen, dass MySQL ziemlich bescheiden ist, was Optimierungen bzgl. GROUP BY in Views betrifft: da wird gar nix optimiert :-(
 

Thallius

Top Contributor
Wäre interessant das mal auszuprobieren. Aber wäre schon ein extremes Armutszeugnis wenn er wirklich erstmal alles joined um es dann mit dem where wieder rauszuwerfen. Das kann ich mir nicht vorstellen.

Gruß

Claus
 

mihe7

Top Contributor
Wäre interessant das mal auszuprobieren. Aber wäre schon ein extremes Armutszeugnis wenn er wirklich erstmal alles joined um es dann mit dem where wieder rauszuwerfen. Das kann ich mir nicht vorstellen.
Das kannst Du gerne machen. Im Wesentlichen ging es um eine (etwas kompliziertere als hier dargestellte) Abfrage der Art
SQL:
SELECT * FROM (SELECT bill_id, sum(price) total FROM bill_pos GROUP BY bill_id) x WHERE x.bill_id = 123;
Wobei der Subselect tatsächlich als View vorlag und auf bill_id natürlich ein Index liegt. Man hätte erwartet, dass der Optimierer daraus
SQL:
SELECT bill_id, sum(price) total FROM bill_pos WHERE bill_id=123 GROUP BY bill_id
bastelt. Tatsächlich wurde aber erst
SQL:
SELECT bill_id, sum(price) total FROM bill_pos GROUP BY bill_id
ausgeführt und dann aus dem Ergebnis die Zeile mit bill_id 123 ermittelt :eek:
 

Thallius

Top Contributor
Deswegen sage ich ja subselects nur benutzen wenn es nicht anders geht. Mit denen habe ich bisher auch nur schlechte Erfahrungen gemacht. Bei mir waren joins immer um ein wesentliches schneller...
 

mihe7

Top Contributor
Wenn das Problem nur am Subselect liegen würde (den habe ich hier nur zur Verdeutlichung verwendet): der Spaß tritt ja auch auf, wenn Du den inneren SELECT als View anlegst und diese verwendest: SELECT * FROM bill_sums WHERE id = 123;

Das Fazit, das ich daraus gezogen haben: verwende für die Anwendung keine Aggregate-Views mit MySQL.

Vielleicht haben sie das in neueren MySQL-Versionen auch schon behoben. Falls nicht: die Lösung wäre vermutlich, eine Rewrite-Engine zu verwenden. Aber ganz ehrlich: bevor ich da neue Komponenten einführe, die irgendwas im Hintergrund veranstalten, baue ich den SELECT lieber in der Anwendung zusammen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
S Insert mit Select Datenbankprogrammierung 6
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
S PostgreSQL Bytea INSERT Datenbankprogrammierung 8
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben