Forum Doku Wiki Blog

Forumsarchiv 2011, Mai
Schulprojekt Hotelbuchung

archivierte Beiträge lesen

  1. (DATENBANK) Schulprojekt Hotelbuchung von Core, 20. 05. 2011, 21:39

Schulprojekt Hotelbuchung

Der folgende Beitrag wurde am 20. 05. 2011, 21:39 Uhr von Core veröffentlicht.

Hallo Leute,
ich muss für die Schule ein PHP Projekt realisieren bei dem Mann oder auch Frau Hotels buchen können.

Leider scheitert es bei mir im Moment an der Logik für die Abfrage:
welches Hotel - die ausgewählten Zimmer Typen hat.

Ich habe die Tabellen:
'hotels'
'hotel_zimmer'


Tabelle: Hotels:
ID | Name | Beschreibung | Kinderbetten_Count Internet | Pets | Anreise | Abreise | Behindertengerecht

Tabelle: Zimmer:
ID | Hotel_ID | Zimmer_Art | Preis | Anzahl | Belegt | Kinderbetten_Option


Jetzt müsste ich alle Hotels auswählen:
die einen Gewissen Zimmer_Art haben (Z.B.: Einzellzimmer) und abfragen
ob dort das Zimmer noch frei ist.



SELECT
       `booking_hotels`.*

FROM `booking_hotels`, `booking_hotelzimmer`

WHERE
`Internet` = 1 AND `Pets` = 1 AND `Behindertengerecht` = 1
AND `booking_hotelzimmer`.`Hotel_ID` = `booking_hotels`.`ID`

AND (`booking_hotelzimmer`.`Zimmer_Art` = 'Einbett-Zimmer' AND `Anzahl` - `Belegt` > 0)

AND (`booking_hotelzimmer`.`Zimmer_Art` = 'Doppelbett-Zimmer' AND `Anzahl` - `Belegt` > 0)


Das Problem ist das ich nicht weiß wie man zwei Zimmer abfragt da ja die Zimmer_Art nicht gleichzeitig Doppebett-Zimmer und Einbett-Zimmer sein kann?

Ich hoffe ihr habt eine gute Idee
lg Core





Schulprojekt Hotelbuchung

Der folgende Beitrag wurde am 21. 05. 2011, 00:43 Uhr von Core veröffentlicht.

> Hallo Leute,
> ich muss für die Schule ein PHP Projekt realisieren bei dem Mann oder auch Frau Hotels buchen können.



SELECT  *,
        a.Anzahl - Gebucht as Rechnung

FROM booking_hotelzimmer as a

        LEFT JOIN (
                        SELECT Zimmer_Art, Hotel_Name, Anzahl,
                        sum(Anzahl) AS Gebucht
                        FROM user_rechnung_hotels
                        AND Abreise
                        GROUP BY Zimmer_Art
        ) AS b
        ON a.Zimmer_Art = b.Zimmer_Art AND a.Hotel_Name = b.Hotel_Name


        LEFT JOIN (
                        SELECT        ID, Name
                        FROM booking_hotels
                        GROUP BY Name                        
        ) AS c
        ON a.Hotel_ID = c.ID

WHERE a.Hotel_ID = c.ID
AND (a.Anzahl - Gebucht > 0 OR a.Anzahl - Gebucht IS NULL)
AND a.Zimmer_Art = 'Einbett-Zimmer'


Ist die Lösung,.. aber wie man das mit der Anreise und Abreise macht,..
Zache Sache,..

Schulprojekt Hotelbuchung

Der folgende Beitrag wurde am 24. 05. 2011, 20:26 Uhr von Ilja veröffentlicht.

moin,

> Jetzt müsste ich alle Hotels auswählen:
> die einen Gewissen Zimmer_Art haben (Z.B.: Einzellzimmer) und abfragen
> ob dort das Zimmer noch frei ist.

es ist eigentlich immer das gleiche vorgehen, als erstes für die richtige selektion sorgen. das heißt in deinem falle keine joins irgendwelcher art, sondern in der FROM klausel gehört nur die tabelle der hotels, alles andere ist schlechtes sql:

SELECT *
FROM booking_hotels h
WHERE h.Internet = 1
AND h.Pets = 1
AND h.Behindertengerecht = 1
;

jetzt nur die hotels nehmen, wo ein zimmer bestimmten typs frei ist, das geht mit einer korrelierten unterabfrage.

SELECT *
FROM booking_hotels h
WHERE h.Internet = 1
AND h.Pets = 1
AND h.Behindertengerecht = 1
AND EXISTS (SELECT NULL
            FROM hotel_zimmer z
            WHERE z.Hotel_ID = h.id
            AND z.zimmer_art IN ('Einbett-Zimmer', 'Doppelbett-Zimmer')
            AND z.anzahl - z.belegt > 0
           )
;


Ilja

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4