M
mw197
Gast
Hallo Leute,
ich habe 3 Tabellen die wie folgt aussehen:
Tabelle1:
`ID` | `betrag1` | `betrag2` | `betrag3` | `kundenID`
Tabelle2:
`ID` | `name` | `preis` | `kundenID`
Tabelle3:
`ID` | `sID` | `kundenID`
Ich möchte nun wissen, welcher Kunde (anhand KundenID) den meisten Umsatz gebracht hat. Ich habe dazu wie folgt gearbeitet, weiß aber nicht so recht, ob das die passende und beste Lösung ist:
Ist das so korrekt oder geht das einfacher UND PERFORMANTER! Das Laden dauer (200.000 Datensätze) um die 3 Sekunden...
Und eigentlich müsste ich ja sortieren nach den 3 Summen! Kann man das? Momentan sortiere ich jede Summe, das stimmt doch nicht oder?
Würde mich über einen Tipp freuen.
Danke!
ich habe 3 Tabellen die wie folgt aussehen:
Tabelle1:
`ID` | `betrag1` | `betrag2` | `betrag3` | `kundenID`
Tabelle2:
`ID` | `name` | `preis` | `kundenID`
Tabelle3:
`ID` | `sID` | `kundenID`
Ich möchte nun wissen, welcher Kunde (anhand KundenID) den meisten Umsatz gebracht hat. Ich habe dazu wie folgt gearbeitet, weiß aber nicht so recht, ob das die passende und beste Lösung ist:
Code:
SELECT
SUM(`t1`.`betrag1`) +
SUM(`t1`.`betrag2`) +
SUM(`t1`.`betrag3`) AS `summe`,
(
SELECT SUM(`preis`) FROM `tabelle2` `t2`
WHERE `t2`.`kundenID` = `t1`.`kundenID`
) AS `summe2`,
(
SELECT COUNT(`ID`) * 5 FROM `tabelle3` `t3`
WHERE `t3`.`kundenID` = `t1`.`kundenID`
) AS `summe3`
FROM `tabelle1` `t1`
GROUP BY `t1`.`kundenID`
ORDER BY
`summe` DESC,
`summ2` DESC,
`summe3` DESC
LIMIT 5
Ist das so korrekt oder geht das einfacher UND PERFORMANTER! Das Laden dauer (200.000 Datensätze) um die 3 Sekunden...
Und eigentlich müsste ich ja sortieren nach den 3 Summen! Kann man das? Momentan sortiere ich jede Summe, das stimmt doch nicht oder?
Würde mich über einen Tipp freuen.
Danke!
Zuletzt bearbeitet:
(SQL-Code übersichtlicher gestartet aufgrund des schmalen Forums)