Hilfe bei einem SQL-Statement

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hilfe bei einem SQL-Statement

    Hallo zusammen,

    wie es der Titel ja schon sagt bräuchte ich mal eure Hilfe bei einem SQL-Statement. Stehe da leider gerade etwas auf dem Schlauch muss ich zugeben.

    Ich habe in einer MySQL Datenbank eine Tabelle mit Cocktails. Als Felder interessiert hier eigentlich nur die ID und der Name des Cocktails. Weiterhin eine Tabelle mit den einzelnen Zutaten. Hier ist wiederum die ID und der Name interessant, außerdem das enum Feld 'typ', in dem 'ja' für alkoholisch steht, 'nein' für nichtalkoholisch. Da zwischen diesen beiden Tabellen eine m:n Beziehung besteht, habe ich eine dritte Tabelle als mapping Tabelle eingefügt. In dieser steht die CocktailID und die ZutatID. Somit gibt es in dieser Tabelle 4 Datensätze, wenn der Cocktail 4 Zutaten besitzt. Nun folgendes Problem: Ich bräuchte ein SQL-Statement, das mir sämtliche nichtalkoholischen Cocktails anzeigt. Es muss also für jeden Cocktail bestimmt werden, ob dieser keine alkoholischen Zutaten besitzt.

    Würde mich freuen, wenn ihr mir helfen könntet.

    MfG Murphy

  • #2
    ... WHERE zutatfeld_alki = 'no'

    den rest entnimmst du bitte der suche und/oder diesem thread. oder dem thread zum thema mit den JOINS.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Danke schon mal soweit.

      In deinem Link habe ich etwas zur Suche von Cocktails mit einer bestimmten Zutat gefunden.

      SELECT *
      FROM cocktails
      INNER JOIN c_z_e_map map ON cocktail_id = map.cocktailID
      INNER JOIN zutaten z ON map.zutatID = z.zutat_ID
      WHERE z.zutatID = 10

      Ist soweit auch klar. Aber wie beschränke ich nun die Zutatentabelle auf all diejenigen Zutaten, die alkoholfrei sind? Ich kann ja nicht einfach schreiben WHERE z.typ = 'nein'. Also wenn vielleicht jemand da noch einen Rat hätte wäre ich sehr dankbar.

      Kommentar


      • #4
        da ich deine komplette db-struktur nicht kenne, hier ein ansatz
        PHP-Code:
        SELECT 
        FROM cocktails
        INNER JOIN c_z_e_map map ON cocktail_id 
        map.cocktailID
        INNER JOIN zutaten z ON map
        .zutatID z.zutat_ID
        WHERE z
        .zutatID 10
        AND z.MITALKOHOL !='JA' 
        (-:
        Bookmarks:·Bilder·Jobs·Recht·
        kostenloser Webkataloge-Assistent

        Kommentar


        • #5
          Hi,

          ich würde eine Unterabfrage erstellen in dem die id aller alkoholischen Getränke aufgeführt werden und dann die id's suchen die nicht in dieser Abfrage enthalten sind.

          So könnte das aussehen:

          SELECT * Cocktails WHERE id NOT IN
          (SELECT Cocktails.Id FROM Zutaten
          INNER JOIN (Cocktails INNER JOIN mappingtable ON Cocktails.Id = mappingtable.IDCocktails) ON Zutaten.ID = mappingtable.IDZutaten WHERE (Zutaten.Alkohol=True));

          Allerdings weiss ich nicht ob "not in" oder Unterabfragen in mysql funktionieren.

          Kommentar


          • #6
            @Murphy
            warum liest du dir die beiden threads nicht noch einmal laaaaangsaaaaam durch...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar

            Lädt...
            X