Announcement

Collapse
No announcement yet.

Fehler bei INNER JOIN

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

  • Fehler bei INNER JOIN

    Hi,

    ich bekomme beim Erstellen der folgenden SQL-Abfrage eine Fehlermeldung.

    Die Datenbank sieht wie folgt aus:
    Tabelle: Zutat
    Z_ID PK
    Name
    E_ID1 FK aus Tabelle Einheit
    E_ID2 FK aus Tabelle Einheit
    E_ID3 FK aus Tabelle Einheit.

    Tabelle: Einheit
    E_ID PK
    Name

    Meine Abfrage:
    SELECT
    Name,
    einheit1.Name AS E1,
    einheit2.Name AS E2,
    einheit3.Name AS E3
    FROM
    Zutat
    INNER JOIN Einheit einheit1 ON Zutat.E_ID1 = einheit1.E_ID
    INNER JOIN Einheit einheit2 ON Zutat.E_ID2 = einheit2.E_ID
    INNER JOIN Einheit einheit3 ON Zutat.E_ID3 = einheit3.E_ID

    Ziel ist es, den Namen der Zutat plus die Namen der Einheiten in einer Tabelle auszugeben.

    Die Fehlermeldung sieht wie folgt aus:
    Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Zutat.E_ID1 = einheit1.E_ID
    INNER JOIN Einheit einheit2 ON Zutat.E_ID2 = einheit2.E_ID
    INNER JOIN Einheit einheit3 ON Zutat.E_ID3 = einheit3.E_ID'

    Vielleicht fällt euch ja was auf - ich bin echt am Verzweifeln.

    Viele Grüße,

    Britta

  • #2
    Öhm... Eine Zutat hat drei Einheiten? Kann doch nur eine sein, oder irre ich?
    PHP rocks!
    Eine Initiative der PHP Community

    Comment


    • #3
      Eine Zutat kann ja in mehreren unterschiedlichen Einheiten angegeben werden, z.B. Zimt in Gramm, Teelöffel und Esslöffel. Deswegen drei mögliche Einheiten pro Zutat.

      Comment


      • #4
        Bis auf das "SELECT Name", Name ist nicht eindeutig da in mehreren der benutzten Tabellen vorhanden, sieht das nach gültigem Syntax aus. Zumindest in jeder halbwegs aktuellen mir bekannten SQL Datenbank.

        Comment


        • #5
          Genau, die Frage wäre, welche Datenbank? Vielleicht Access?
          Hier werden die Feld und Tabellennamen "sicherheitshalber" gern in eckige Klammern gesetzt und mit Punkt getrennt.
          [meineTabelle].[Mit Ihrem Dämlichen Spaltennamen]

          In anderen Systemen so ähnlich.
          Name kann dabei schon reserviertes Wort sein.

          Neben der Syntax, solltest Du noch mal über Dein Datenmodell nachdenken.
          Auch wenn 3 Einheiten Möglich sind, würde man die ja nicht gleichzeitig referenzieren oder?

          Wenn ich 3 oder mehr Adressen eintagen kann, mache ich dazu ja nicht auch 3 oder mehr Spalten in die Personentabelle.
          Gruß, defo

          Comment


          • #6
            Sieht mir nach Access aus.
            Versuch das AS zu setzen
            INNER JOIN Einheit AS einheit1 ON Zutat.E_ID1 = einheit1.E_ID
            und Name ist ein reserviertes Wort
            https://support.microsoft.com/en-us/...rs=en-us&ad=us
            Christian

            Comment

            Working...
            X