Viennamade: Ersatz für Subselect

Beitrag lesen

Hallo Andreas!

Ich tue jetzt eineinhalb Stunden mit Deinem Abfrageentwurf herum und bekomme immer einen Syntaxfehler, ich sehe aber keinen.

Fehlernr: 1064

Fehler: You have an error in your SQL syntax near ' Sprachen AS s ON bi.PicNr = bitxt.BildNr WHERE bi.osname = 'x96.gif' AND ((s.Ku' at line 1

String:
SELECT s.LangNr, s.Kuerzel, bi.PicNr, bitxt.BildNr, bi.osname, bi.pxhoehe, bi.pxbreite, bitxt.alttag, bitxt.title
  FROM Bilder AS bi LEFT JOIN Bildertexte AS bitxt, Sprachen AS s ON bi.PicNr = bitxt.BildNr
  WHERE bi.osname = 'x96.gif' AND ((s.Kuerzel= 'DE' AND bitxt.Sprache = s.LangNr) OR bitxt.Sprache IS NULL)

Wenn Du das letzte Posting von Ilja liest (15. September 2004, 18:49), dann meint er - sicher zu recht - daß das Tabellendesign schlecht wäre. Zumindest der Punkt a) seiner dortigen Erklärungen sind mir unklar.

Er meint, daß Du die Sprache holen sollst, bevor es in biler_text NULL-Werte gibt, aber dann müßtest Du in der Sprachtabelle für jedes Bild die möglichen Sprachen aufführen und außerdem bekommst Du dann schon dort NULL-Werte, weil schein.jpg nun mal dort nicht mir EN aufgeführt wäre. Halte ich im Ganzen nicht für gut, auch weil die Sprache nichts mit dem Bild zu tun hat und wegen der Redundanzen in der Sprachen-Tabelle.

Gefallen tut mir Iljas Vorschlag auch nicht wirklich - aber wenns nicht anders geht... und logisch erscheint mir seine Begründung auch, aber das geht mir mit meinem Tabellenaufbau auch so - g.

Mittlerweile habe ich die Funktion umgestellt. Zuerst wird die id des Sprachkürzels abgefragt, also 1 für DE, 2 für EN und mit dieser id wird dann in der "großen" Abfrage Bildertexte abgefragt. Also kein Join auf Sprachen. Also ich brauch keine Lösung mehr ...
Andererseits würde es mich natürlich schon interessieren und jede Idee ausprobieren. Aber der Syntaxerror von oben ist mir ein Rätsel, vielleicht hängt es mit der MySQL-Version 3.23.52-log. zusammen ...

Danke für Deine Bemühungen & Beste Grüße
Viennamade