Bitte Twilo,
welcher Syntax ist eigentlich besser?
das heißt: "Welche Syntax ist eigentlich besser?"!
Zwei ellenlange Statements, einziger Unterschied der CROSS JOIN im ersten Fall, der INNER JOIN im zweiten Fall, warum machst Du es Deinen potentiellen Helfern so schwer? Wenn ein INNER JOIN existiert, dann schreib' das auch hin. Also ist meiner Meinung nach die zweite Variante sauberer (und portabler). Der Umgang von MySQL mit CROSS JOINs variiert zwischen MySQL-Versionen und steht zum Teil im Widerspruch zu den SQL-Standards.
kann man unter MySQL 4.1 die Formel in Zwischenschritte untergliedern?
groesse._breite / 1000 * groesse._hoehe / 1000* auflage._auflage * gewicht._bedrgewicht/1000 * groesse._bedrkosten
kommt z.B. 3mal vor
Was hast Du versucht?
beide Abfragen brauchen laut phpMyAdmin ca. 0.0035 Sekunden
Gibt es eine Möglichkeit, wie man die Abfrage allgemein optimieren kann?
Frag' die Datenbank, nutze EXPLAIN.
Die SQL Befehle ohne DISTINCT geben 41.280 Datensätze zurück...
ich fage mich wieso... eigentlich dürfte nur einer rauskommen
warum? Woher sollen wir das wissen? Du hast uns keinen einzigen Deiner Datensätze verraten. Offensichtlich gibt es eben 41.280 verschiedene Möglichkeiten, diese Datensätze in Deinem komplexen JOIN miteinander zu kombinieren, wobei stets der gleiche Preis rauskommt. Wo ist das Problem? Hast Du Rouvens und meinen Artikel zu JOINs gelesen?
ist da irgendwo ein Join Problem, dass er soviele (immer das gleiche Ergebnis) Datensätze anzeigt?
Möglicherweise hast Du ein Verständnisproblem, was JOINs betrifft - und machst falsche Annahmen. Zwar hat auch MySQL 4.1 Verständnisproblem, was JOINs betrifft und liefert in bestimmten Fällen systematisch falsche Ergebnisse - aber nicht bei ausschließlicher Verwendung von INNER JOINs wie in Deinem Fall.
Freundliche Grüße
Vinzenz