Xardas der Dunkle wrote:Ich denke man sollte trotzdem lieber einen INNER-JOIN dem CROSS-JOIN vorziehen.
Ne, sehe ich keinen Grund. Der SQL Interpreter generiert aus CROSS mit WHERE exakt dasselbe wie aus INNER mit ON. Vor allem habe ich ja selbst schon mit MySQL 3.x programmiert, als der INNER JOIN mit ON gar nicht unterstützt wurde - das ist genau genommen von MySQL so gewollt, dass man CROSS Joins mit WHERE benutzt. Ich finde diese Unterscheidung ohnehin philosophischer Natur, denn die Fundstelle ist die gleiche, und dann gehört es zu einem guten SQL Parser, das Coding zu optimieren.
Xardas der Dunkle wrote:Vor allem kann man so (wenn man auf andere Dinge wie z.B. LIMIT verzichtet) die Engine relativ einfach austauschen.
Da muss man sich aber heftig einschränken, denn eine Umstellung von MySQL auf Oracle (nur als Beispiel) ist eine ganz schöne Arbeit. Eigentlich sollte SQL ja standardisiert sein, aber wer MySQL benutzt, der hat die Entscheidung schon gefällt, dass er dabei bleiben will und dann braucht man auch nicht kompatibel zu arbeiten. Es wird sowieso nicht kompatibel.
Das LIMIT ist beispielsweise nicht ersetzbar (MySQL kennt keine andere Syntax), andererseits unverzichtbar. Und ganz schlimm sind die von MySQL geforderten Backticks, damit Eigennamen nicht mit reservierten Wörtern kollidieren. Andererseits wäre es auch mal für viele "Laienprogrammierer" ganz heilsam, wenn sie mit einem ANSI-SQL arbeiten würden, denn gerade im Umgang mit Gruppierungen wird ziemlicher Mist programmiert (es werden Felder selektiert, nach denen gar nicht gruppiert wurde - bei MySQL kommt dann ein zufälliges Ergebnis zur Laufzeit heraus, bei Oracle gibt es einen fetten SQL Error, letzteres halte ich für richtig).
Also insgesamt finde ich das nicht sonderlich wichtig, ich weiß, dass ich mich mit MySQL auf einer Insel befinde, aber für die allermeisten WWW-Anwendungen ist das vollkommen ausreichend.