1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Subselect Anweisung Hilfe

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von mazaka, 7 Juli 2011.

  1. mazaka

    mazaka Neuer Benutzer

    Hallo,

    also Problem ist folgendes:
    Wir haben eine SQL-Datenbank "Hotel" mit folgenden Tabellen und Feldern:
    1. Buchung:
    - Buchungsnr (Primärschlüssel, auto-inc)
    - Zimmernummer
    - belegtVon
    - belegtBis

    2. Zimmer:
    - Zimmernummer (Primärschlüssel)
    - Kategorie


    So, nun zum eigentlichen Problem:
    Ich brauche eine SELECT-Abfrage, die mir die freien Zimmer ab heute bis zum 31.12.2011 zurück gibt und mir dabei auch den Zeitraum nennt an dem das Zimmer frei sein wird. Arbeiten tue ich mit dem "Microsoft SQL Server Management".



    Als Lösung habe ich bereits folgendes realisiert:
    Code:
    select *,
      FREIVON_DAVOR = isnull((select convert(varchar,dateadd(D,1,BELEGTBIS),104) from BUCHUNG bu where bu.ZIMMERNUMMER=subsel1.ZIMMERNUMMER and convert(numeric,bu.BUCHUNGNR) = convert(numeric,subsel1.BUCHUNGNR) - 1),'01.01.2011'),
      FREIBIS_DAVOR = convert(varchar,dateadd(D,-1,subsel1.belegtvon),104),
      FREIVON_DANACH = convert(varchar,dateadd(D,1,subsel1.belegtbis),104),
      FREIBIS_DANACH = isnull((select convert(varchar,BELEGTVON,104) from BUCHUNG bu where bu.ZIMMERNUMMER=subsel1.ZIMMERNUMMER and convert(numeric,bu.BUCHUNGNR) = convert(numeric,subsel1.BUCHUNGNR) + 1),'31.01.2011')
    from (
      select z.ZIMMERNUMMER,z.KATEGORIE,b.BUCHUNGNR,b.BELEGTVON,b.BELEGTBIS
      from ZIMMER z
      left join BUCHUNG b on b.ZIMMERNUMMER=z.ZIMMERNUMMER
    ) subsel1
    Das Problem bei meiner Abfrage ist, das ich davon ausgehe, das die Buchungsnummer je Zimmer vergeben wird. (immer +1). In der Datenbank werden die Buchungsnr. aber zufällig verteilt.
    [​IMG]

    Kann mir dabei jemand aus der Community vielleicht helfen? Komme da leider nicht weiter.

    Danke schonmal im Voraus!
     
  2. ukulele

    ukulele Datenbank-Guru

    Das sieht kompliziert aus aber gehe ich recht in der Annahme, das du schwirigkeiten bekommst wenn ein Zimmer erst frei, dann gebucht, dann frei, dann wieder gebucht und wieder frei ist? Dann würde er doch 2 Einträge anzeigen bei der die jeweils andere Buchung in einer FREIDAVOR oder FREIDANACH Periode liegt.
     
  3. Gadolfo

    Gadolfo Neuer Benutzer

    Genau richtig, dann gibt es Schwierigkeiten.

    Das mit den 2 Einträgen für jeweils eine andere Buchung verstehe ich nicht.

    Aber es wäre natürlich ideal, wenn die Ausgabe z.B. so wäre.

    01.01.2010 - 11.08.2010 - 15.08-2010 - 30.01.2011

    15.08.2010 - 30.01.2011 - 02.02.2011 - 31.12.2011

    So würde jeweils Datensatz 1 und 2 aufeinander Bezug nehmen, aber ob das realisierbar ist, ist halt meine Frage, aber vllt fällt einem anderen noch eine andere Darstellung bzw. Lösungsform hier ein!
     
  4. ukulele

    ukulele Datenbank-Guru

    Ideal wäre eine Kalenderübersicht wie in Outlook (auch wenn es eine gemeine Software ist). Nur so wäre man schnell in der Lage, Zimmer optimal zu belegen. Es ist ja nicht nur Ziel, freie Zimmer zu finden, sondern auch möglichst lückenlos zu vermieten.
     
Die Seite wird geladen...

Diese Seite empfehlen