Hallo,
welcher Syntax ist eigentlich besser?
-----------------
SELECT DISTINCT ROUND((
(groesse._breite / 1000 * groesse._hoehe / 1000* auflage._auflage * gewicht._bedrgewicht/1000 * groesse._bedrkosten) +
((farbe._vorderfarbe + farbe._rueckfarbe) * produkt._plattenkosten) +
((((farbe._vorderfarbe + farbe._rueckfarbe) * produkt._ruestzeitproplatte/60) + ((auflage._auflage / CEIL(produkt._bogengroesse / (groesse._breite / 1000 * groesse._hoehe / 1000 * 1.1))) / produkt._maschinengeschwindigkeit) + produkt._einrichtzeit/60) * produkt._maschinenstundensatz) +
(produkt._bogengroesse * gewicht._bedrgewicht/1000 * groesse._bedrkosten * produkt._einrichtboegen) +
ceil(groesse._breite / 1000 * groesse._hoehe / 1000 * auflage._auflage * gewicht._bedrgewicht/1000 * versandart._versdandt) *
faktor._faktor), 2) AS preis
FROM `t1_produkt` AS produkt, `t1_fracht` AS ffracht
INNER JOIN t1_gewinnfaktor AS faktor ON faktor._gewinnfaktor_id = produkt._gewinnfaktor_id
INNER JOIN t1_produkt_has_farbe ON t1_produkt_has_farbe._produkt_id = produkt._produkt_id
INNER JOIN t1_farbe AS farbe ON farbe._farb_id = t1_produkt_has_farbe._farb_id
INNER JOIN t1_produkt_has_versandart ON t1_produkt_has_versandart._produkt_id = produkt._produkt_id
INNER JOIN t1_versandart AS versandart ON versandart._versandart_id = t1_produkt_has_versandart._versandart_id
INNER JOIN t1_produkt_has_auflage ON t1_produkt_has_auflage._produkt_id = produkt._produkt_id
INNER JOIN t1_auflage AS auflage ON auflage._auflage_id = t1_produkt_has_auflage._auflage_id
INNER JOIN t1_produkt_has_gewicht ON t1_produkt_has_gewicht._produkt_id = produkt._produkt_id
INNER JOIN t1_gewicht AS gewicht ON gewicht._gewicht_id = t1_produkt_has_gewicht._gewicht_id
INNER JOIN t1_produkt_has_groesse ON t1_produkt_has_groesse._produkt_id = produkt._produkt_id
INNER JOIN t1_groesse AS groesse ON groesse._groesse_id = t1_produkt_has_groesse._groesse_id
INNER JOIN t1_fracht_has_produkt AS fprodukt ON fprodukt._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_farbe AS ffarbe ON ffarbe._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_gewicht AS fgewicht ON fgewicht._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_groesse AS fgroesse ON fgroesse._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_auflage AS fauflage ON fauflage._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_versandart AS fversandart ON fversandart._fracht_id = ffracht._fracht_id
WHERE produkt._produkt_id = 3 AND gewicht._gewicht_id = 1 AND groesse._groesse_id = 6 AND farbe._farb_id = 3 AND auflage._auflage_id = 1 AND versandart._versandart_id = 1
-----------------
oder dieser
-----------------
SELECT DISTINCT ROUND((
(groesse._breite / 1000 * groesse._hoehe / 1000* auflage._auflage * gewicht._bedrgewicht/1000 * groesse._bedrkosten) +
((farbe._vorderfarbe + farbe._rueckfarbe) * produkt._plattenkosten) +
((((farbe._vorderfarbe + farbe._rueckfarbe) * produkt._ruestzeitproplatte/60) + ((auflage._auflage / CEIL(produkt._bogengroesse / (groesse._breite / 1000 * groesse._hoehe / 1000 * 1.1))) / produkt._maschinengeschwindigkeit) + produkt._einrichtzeit/60) * produkt._maschinenstundensatz) +
(produkt._bogengroesse * gewicht._bedrgewicht/1000 * groesse._bedrkosten * produkt._einrichtboegen) +
ceil(groesse._breite / 1000 * groesse._hoehe / 1000 * auflage._auflage * gewicht._bedrgewicht/1000 * versandart._versdandt) *
faktor._faktor), 2) AS preis
FROM `t1_produkt` AS produkt
INNER JOIN t1_gewinnfaktor AS faktor ON faktor._gewinnfaktor_id = produkt._gewinnfaktor_id
INNER JOIN t1_produkt_has_farbe ON t1_produkt_has_farbe._produkt_id = produkt._produkt_id
INNER JOIN t1_farbe AS farbe ON farbe._farb_id = t1_produkt_has_farbe._farb_id
INNER JOIN t1_produkt_has_versandart ON t1_produkt_has_versandart._produkt_id = produkt._produkt_id
INNER JOIN t1_versandart AS versandart ON versandart._versandart_id = t1_produkt_has_versandart._versandart_id
INNER JOIN t1_produkt_has_auflage ON t1_produkt_has_auflage._produkt_id = produkt._produkt_id
INNER JOIN t1_auflage AS auflage ON auflage._auflage_id = t1_produkt_has_auflage._auflage_id
INNER JOIN t1_produkt_has_gewicht ON t1_produkt_has_gewicht._produkt_id = produkt._produkt_id
INNER JOIN t1_gewicht AS gewicht ON gewicht._gewicht_id = t1_produkt_has_gewicht._gewicht_id
INNER JOIN t1_produkt_has_groesse ON t1_produkt_has_groesse._produkt_id = produkt._produkt_id
INNER JOIN t1_groesse AS groesse ON groesse._groesse_id = t1_produkt_has_groesse._groesse_id
INNER JOIN t1_fracht AS ffracht ON ffracht._fracht_id = fprodukt._fracht_id
INNER JOIN t1_fracht_has_produkt AS fprodukt ON fprodukt._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_farbe AS ffarbe ON ffarbe._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_gewicht AS fgewicht ON fgewicht._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_groesse AS fgroesse ON fgroesse._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_auflage AS fauflage ON fauflage._fracht_id = ffracht._fracht_id
INNER JOIN t1_fracht_has_versandart AS fversandart ON fversandart._fracht_id = ffracht._fracht_id
WHERE produkt._produkt_id = 3 AND gewicht._gewicht_id = 1 AND groesse._groesse_id = 6 AND farbe._farb_id = 3 AND auflage._auflage_id = 1 AND versandart._versandart_id = 1
-----------------
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
beide Abfragen brauchen laut phpMyAdmin ca. 0.0035 Sekunden
Gibt es eine Möglichkeit, wie man die Abfrage allgemein optimieren kann?
Die SQL Befehle ohne DISTINCT geben 41.280 Datensätze zurück...
ich fage mich wieso... eigentlich dürfte nur einer rauskommen
ist da irgendwo ein Join Problem, dass er soviele (immer das gleiche Ergebnis) Datensätze anzeigt?
mfg
Twilo