Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Bug #15229: Unkown column bei JOINs

Einklappen

Neue Werbung 2019

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

  • MySQL Bug #15229: Unkown column bei JOINs

    Hallo,

    Mir fehlt bezüglich des oben genannten Bugs ein wenig der Durchblick. Auswirkung ist jedenfalls, dass die JOIN-Syntax in MySQL 5.x gegenüber 4.x dahingehend geändert wurde, dass manche Abfragen nicht mehr funktionieren und umgeschrieben werden müssen.

    Es geht darum, dass MySQL bei einer vormals korrekten Abfrage, die JOINs verwendet, nun meldet:

    Unknown column 'xxx' in 'on clause'

    Hier das Beispiel einer Abfrage, die mit der Meldung Unknown column 't.topic_first_post_id' in 'on clause' fehlschlägt:

    Code:
    SELECT p.post_username AS last_poster_name 
    FROM phpbb_topics t, phpbb_posts p 
    LEFT OUTER JOIN phpbb_posts p2 ON p2.post_id = t.topic_first_post_id
    Ich bin mit JOINs nicht besonders bewandert, jedenfalls ist die Meldung sinnlos, weil die Spalte sehr wohl existiert.

    Bug #15229 scheint außerdem ein Problem zu beschreiben, welches mit meinem nur teilweise zusammenhängt, da ich kein USING verwende (siehe http://bugs.mysql.com/bug.php?id=15229). Meine verwendete MySQL Version ist 5.0.51a-community-nt.

    Kennt jemand da einen generellen Weg, um das Problem zu lösen / zu umgehen?


    Viele Grüße,

    Michael

  • #2
    hi,

    du musst schon etwas präziser werden. also mysql version, abfrage, tabelle usw..

    möglicherweise helfen dir auch die letzten 4 posts bei http://bugs.mysql.com/bug.php?id=15229 weiter, dort steht, dass mysql in dieser hinsicht seit version 5 ANSI SQL (dem sql standard) folgt.

    gruß

    Kommentar


    • #3
      dass mysql in dieser hinsicht seit version 5 ANSI SQL (dem sql standard) folgt.
      Bedeutet, dass ich, wenn ich auf Version 5 umsteige, Code umschreiben muss?

      Kommentar


      • #4
        Ein Problem könnte sein, dass du hier zwei JOINS auf die gleiche Tabelle machst, einmal einen CROSS JOIN (Alias p) und dann den LEFT JOIN (p2). Das ist zwar kein Fehler, macht meines Erachtens aber auch keinen Sinn. Falls du den CROSS JOIN nicht zwingend brauchst (was ich vermute) versuchs mal so:
        Code:
        SELECT 
        	p.post_username AS last_poster_name
        FROM 
        	phpbb_topics t
        LEFT JOIN 
        	phpbb_posts p ON t.topic_first_post_id = p.post_id

        Kommentar


        • #5
          Danke, das hat mal weitergeholfen.


          Michael

          Kommentar

          Lädt...
          X