Seismic: Hilfebei SQL Abfrage

Hallo,
ich bräuchte eine Abfrage die mir alle "rezeptid"'s liefert, die nicht die "eigenschaftsid" 39 haben. Die Datem kommen aus einer View, deshalb gibts keinen Primärschlüssel. Steh da irgendwie etwas auf dem Schlauch..

rezeptid, titel, eigenschaftsid, bezeichnung
1, 'Chili con Carne', 64, 'Fleisch, Schinken, Lachs'
1, 'Chili con Carne', 39, 'Rindfleisch'
1, 'Chili con Carne', , ''
2, 'mein titel', , ''
4, 'Kartoffelsalat', , ''
4, 'Kartoffelsalat', 64, 'Fleisch, Schinken, Lachs'
4, 'Kartoffelsalat', 39, 'Rindfleisch'
5, 'Spargecremesoup á la provence  ', 50, 'Glutamat'
5, 'Spargecremesoup á la provence  ', 28, 'Gluten'
5, 'Spargecremesoup á la provence  ', 72, 'Suppen & Fertiggerichte'
5, 'Spargecremesoup á la provence  ', 51, 'Aromen'
5, 'Spargecremesoup á la provence  ', 53, 'Farbstoffe'
5, 'Spargecremesoup á la provence  ', 61, 'Gewürze, Salz, Essig, Öl'

  1. Hi,

    ich bräuchte eine Abfrage die mir alle "rezeptid"'s liefert, die nicht die "eigenschaftsid" 39 haben. Die Datem kommen aus einer View, deshalb gibts keinen Primärschlüssel. Steh da irgendwie etwas auf dem Schlauch..

    rezeptid, titel, eigenschaftsid, bezeichnung
    1, 'Chili con Carne', 64, 'Fleisch, Schinken, Lachs'
    1, 'Chili con Carne', 39, 'Rindfleisch'
    1, 'Chili con Carne', , ''
    2, 'mein titel', , ''
    4, 'Kartoffelsalat', , ''
    4, 'Kartoffelsalat', 64, 'Fleisch, Schinken, Lachs'
    4, 'Kartoffelsalat', 39, 'Rindfleisch'
    5, 'Spargecremesoup á la provence  ', 50, 'Glutamat'
    5, 'Spargecremesoup á la provence  ', 28, 'Gluten'
    5, 'Spargecremesoup á la provence  ', 72, 'Suppen & Fertiggerichte'
    5, 'Spargecremesoup á la provence  ', 51, 'Aromen'
    5, 'Spargecremesoup á la provence  ', 53, 'Farbstoffe'
    5, 'Spargecremesoup á la provence  ', 61, 'Gewürze, Salz, Essig, Öl'

    Ich interpretiere deine Frage so:
    Gib mir alle Rezepte, welche nicht die Zutat 39 (Rindfleisch?) haben.

    Dies wäre etwa so möglich:

      
    SELECT rezeptid                                   -- gib mir alle rezeptid  
      FROM deinview                                   -- aus meiner view  
      WHERE                                           -- welche  
        NOT EXISTS                                    -- nicht die Zutat  
          (SELECT *                                   -- gib mir alle Zutaten  
             FROM deinview AS dv                      -- aus meiner view  
             WHERE dv.rezeptid = deinview.rezeptid    -- die zu meinem Rezept gehören  
               AND dv.eigenschaftsid = 39             -- und Rindfleisch beinhalten  
          )  
    
    

    Das ist deswegen nicht leicht zu lesen, da deine View die normalisierte Struktur, aus welcher du bereits einfach alles auslesen könntest, bereits verdeckt.

    Ich nehme an, dass es eine Relation "rezept" und eine Relation "zutat" gibt, welche über den Primärschlüssel "rezeptid" miteinander verknüpft sind (in einer 1:n Beziehung).
    Dann wäre das soetwas wie

      
    SELECT rezeptid                                   -- gib mir alle rezeptid  
      FROM rezept                                     -- aus der Menge aller Rezepte  
      WHERE                                           -- bei welchen  
        NOT EXISTS                                    -- keine Zutat existiert  
          (SELECT *                                   --  
             FROM zutat                               --  
             WHERE zutat.rezeptid = rezept.rezeptid   -- die zu meinem Rezept gehört  
               AND zutat.eigenschaftsid = 39          -- und Rindfleisch beinhaltet  
          )  
    
    

    Bis die Tage,
    Matti

    1. Hallo Matti,
      vielen Dank für die schnelle und ausführliche Antwort. Du hast Recht, es gibt über eine Rezept-Produkt-Eigenschaft diese Zuordnung auch in der Tabellenstruktur. So brauch ich die Abfrage auch nicht mehr als View realisieren.

      Ich wünsche dir ein schönes Wochenende!
      Dirk