Announcement

Collapse
No announcement yet.

zwei MySQL Tabellen verbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • zwei MySQL Tabellen verbinden

    Hallo

    Ich habe zwei MySQL Tabellen erstellt:

    Tabelle 1 = "instrumente"
    mit folgender Struktur:
    b1="Datum"
    b2="Area"
    b3="TischNr"
    b4="nicht wichtig"
    b5="Person"
    (In dieser Tabelle werden alle Personen(b5) gespeichert, die Tisch Nr(b3) für ausgewälte Lokation(b2) und ausgewälte Datum(b1))

    und Tabelle 2 = "areas"
    b1="Area"
    b2="Tisch Nr"
    b3="Mindestumsatz"

    (In dieser Tabelle werden alle Lokations(b1) Tische Nr(b2) Mindestumsatz(b3) festgelegt
    -----------------------------------------------
    Nun kommt die Abfrage.
    Ich möchte als Kunde von bestimmtes Datum und Raum einen Tisch reservieren. Hier müssen alle besetzte Plätze und freie Plätze(ohne Dopelt gemopelt) angezeigt werden.

    ich nutze die php Variablen, die schon das Datum($wann) und Raum($wo) ausgewält hat.

    Die MySQL Abfrage der einzelnen Tabellen sieht so aus:
    Tabelle 2
    PHP Code:
    // es werden nur prinzipiel alle Tische und Mindestumsatz für diese Lokation abgefragt 
    $anfrage="SELECT * FROM areas   WHERE (b1='$wo') ORDER BY b2"
    und Tabelle 1
    PHP Code:
    // wird nur  nach Tisch Nr und Person abgefragt, die in ausgewählte Lokation($wo) in ausgewälte Datum($wann) Reservationen gemacht haben
    $anfrage="SELECT * FROM instrumente   WHERE (b2='$wo') AND (b1='$wann') ORDER BY b3"
    ----------------------
    Und möchte ich die beide Tabellen verbinden und auswerten:
    es sollen in ausgewählte Lokation($wo) in ausgewälte Datum($wann) alle Tische angezeigt werden- die Tische die reserviert sind mit der Name Person(instrumente.b5) und
    den restliche freien Tische mit Mindestumsatz(areas.b3)

    Wie schaffe ich das?

  • #2
    Code:
    SELECT areas.b1, areas.b2, areas.b3, instrumente.b1, instrumente.b5 FROM area
      LEFT OUTER JOIN instrumente ON
        areas.b1 = instrumente.b2 AND areas.b2 = instrumente.b3 AND instrumente.b1 = '$wann'
    WHERE areas.b1 = '$wo'
    ungetestet

    Comment


    • #3
      Warum um himmelswillen heissen Spalten b1-b5?

      Noch eine Feinheit:

      [highlight=sql]
      SELECT areas.b1, areas.b2, areas.b3, instrumente.b1, instrumente.b5 FROM area
      LEFT OUTER JOIN instrumente ON
      areas.b1 = instrumente.b2 AND areas.b2 = instrumente.b3
      WHERE areas.b1 = '$wo'
      AND instrumente.b1 = '$wann'
      [/highlight]

      Das letzte AND an die WHERE Klausel anhängen. Im JOIN nur die Informationen unterbringen die die Tabellen verbinden. Funktionieren würde aber beides

      An dieser Stelle möchte ich noch auf Jürgen Thomas WikiBook verweisen dessen URL ich grad nicht zur Hand hab. Lässt sich aber bestimmt per Forensuche schnell finden

      Comment


      • #4
        Leute, ihr macht euch umsonst Gedanken.
        Das Thema wurde bereits in einem anderen Forum erledigt.
        Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

        Comment


        • #5
          @dibo33: Gut zu wissen

          @fanderlf:

          Das letzte AND an die WHERE Klausel anhängen. Im JOIN nur die Informationen unterbringen die die Tabellen verbinden. Funktionieren würde aber beides
          Knapp daneben! Die Anforderung war, auch die nicht reservierten Tische anzuzeigen. Du bekommst bei deiner Abfrage diese nicht angezeigt, da du über den OUTER JOIN in diesem Fall eine leere "instrumente"-Tabelle erhälst, und der WHERE-Teil "AND instrumente.b1 = '$wann'" würde dies wegfiltern (wäre immer falsch, da instrumente.b1 = NULL), so dass nicht reservierte Tische wortwörtlich unter den Tisch fallen

          Comment

          Working...
          X