Syntax-Fehler im Query?

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

  • Syntax-Fehler im Query?

    Hallo zusammen,

    ich verzweifle gerade ein wenig beim Debugging und frage mich ob eventuell mein QUERY Schuld ist am vermutlich falschen Ergebnis.

    PHP-Code:
    SELECT DISTINCT t1.PRODUKT_ID,t2.PRODUKT_ID,t3.PRODUKT_ID,t4.PRODUKT_ID,t5.PRODUKT_ID

            FROM 
            
            TABELLE 
    AS t1 INNER JOIN 
            TABELLE 
    AS t2 INNER JOIN 
            TABELLE 
    AS t3 INNER JOIN 
            TABELLE 
    AS t4 INNER JOIN 
            TABELLE 
    AS t5 
            
            ON 
            
            t1
    .PRODUKT_ID t2.PRODUKT_ID AND 
            
    t1.PRODUKT_ID t3.PRODUKT_ID AND 
            
    t1.PRODUKT_ID t4.PRODUKT_ID AND 
            
    t1.PRODUKT_ID t5.PRODUKT_ID AND 
            
            
    t5.KAT_ID 84 
    Ich muss zugeben, ich tue mich etwas schwer mit JOINS und stelle mir die Frage ob schon grundlegend etwas falsch ist an meinem QUERY.
    Zuletzt geändert von gruenspan; 10.07.2012, 16:48.

  • #2
    Hallo,

    syntaktisch ist das korrekt, ob es Sinn ergibt, weiß ich nicht, da es sehr nach Pseudocode aussieht.

    Wenn es kein Pseudocode ist und PRODUCT_ID der Primärschlüssel ist, sind die Joins nutzlos, weil sie 5 mal denselben Datensatz nebeneinander in einer Row liefern. Wenn PRODUCT_ID kein Primärschlüssel ist, sind die Spaltenreferenzen nutzlos, weil du von 5 verschiedenen Datensätzen nur die übereinstimmende Spalte anzeigst und damit auch 5 mal die gleiche Information in einer Row hast.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Danke Amica,

      ich konnte das Problem mittlerweile lösen. Es lag an einem Schreibfehler bzw. an einer falschen Angabe des Spaltennamens. Ich habs oben schon ausgebessert.
      Der Primärschlüssel ist KAT_ID nicht PRODUKT_ID.

      Zufälligerweise hatte ein Produkt und eine Kategorie die selbe ID, sodass es zu einem Ergebnis kam und dadurch die Verwirrung entstand.

      In der Originaltabelle ähneln sich die Spaltennamen sehr stark und sind dazu noch alle groß geschrieben.

      PHP-Code:
      SELECT DISTINCT t1.PRODUKT_ID,t2.PRODUKT_ID,t3.PRODUKT_ID,t4.PRODUKT_ID,t5.PRODUKT_ID

              FROM 
              
              TABELLE 
      AS t1 INNER JOIN 
              TABELLE 
      AS t2 INNER JOIN 
              TABELLE 
      AS t3 INNER JOIN 
              TABELLE 
      AS t4 INNER JOIN 
              TABELLE 
      AS t5 
              
              ON 
              
              t1
      .PRODUKT_ID t2.PRODUKT_ID AND 
              
      t1.PRODUKT_ID t3.PRODUKT_ID AND 
              
      t1.PRODUKT_ID t4.PRODUKT_ID AND 
              
      t1.PRODUKT_ID t5.PRODUKT_ID AND 
              
              
      t5.KAT_ID 84 // Hier stand vorher PRODUKT_ID und das war der Fehler 

      Kommentar


      • #4
        Das mag alles sein, ändert aber nichts daran, dass die Abfrage total sinnlos ist und immer 5 mal dieselbe ID zurückgibt
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Nunja, ganz so sinnlos ist das nicht, da ich genau die PRODUKT_ID haben will.
          Hintergrund ist; ich habe eine Tabelle in der Produkte verschiedenen Kategorien zugeordet werden, welche ich über einen Filter aus 5 Selectfeldern anspreche.
          Die Tabelle sieht etwa so aus

          Code:
          PRODUKT_ID | KAT_ID
               9          16
               9          77	
               9          82
               10         16
               10         77
          Bei einer Abfrage mit t5.KAT_ID = 16 wäre hier das Ergebnis folgende Liste von ID's: 9,10

          Wäre mein CODE also "total sinnlos" wäre ja das Ergebnis auch sinnlos
          Zuletzt geändert von gruenspan; 10.07.2012, 18:05.

          Kommentar

          Lädt...
          X