| | | | |
| | |
| Neuer Benutzer Registriert seit: 24.08.2010
Beiträge: 21
PHP-Kenntnisse: Anfänger ![]() | Hallo allerseits, nachdem mir das letzte Mal bei einem ähnlichen Thema ([Erledigt] Abfrage aus mehreren Tabellen) so großartig geholfen wurde, kann mir bei meinem neuen Problem bestimmt auch jemand helfen: Es geht immer noch um das selbe Projekt, die Auswertung der Inventuren von über 100 Filialen über 4 Jahre. Ich habe jetzt noch zwei Tabellen. Einmal die Inventuren und einmal die Umsätze. (Die Umsätze benötige ich, um eine Quote zu errechnen damit die Filialen verglichen werden können.) Momentan lasse ich die DB mit PHP 4 (4 Jahre) * x-mal (so oft wie es Filialen gibt) durchsuchen, was natürlich extrem zeitaufwändig ist. Vorher werden schon mal die Mittelwerte berechnet, um eine Ampel darstellen zu können die zeigt ob die Filiale besser oder schlechter als der Durchschnitt ist. Ich habe momentan nur 20 Filialen in der DB und die Abfrage dauert schon 20 Sekunden! Lässt sich das auch DB-seitig lösen? Meine Lösung erscheint mir selbst sehr kompliziert, aber meine Kenntnisse reichen (noch) nicht aus eine bessere zu finden. Mein Script sieht momentan so aus: PHP-Code: HiddenX |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 18.07.2005
Beiträge: 4.071
![]() ![]() | Das Problem ist, dass du Datenabfragen innerhalb einer Schleife ausführst. Das frisst natürlich Ressourcen. Befasse dich mal mit JOINS: Einführung in Joins und eventuell kann dir auch noch GROUP BY weiterhelfen, um deine Ergebnisse nach dem Jahr zu gruppieren.
__________________ HalloPHP |
| | |
| | |
| Moderator | Mit SELECT ... FROM tabelle1,tabelle2 bildest du im Speicher ein karthesisches Produkt der Tabellen. Bei kleinen Tabellen macht das keine Probleme, aber wenn z.B. jede Tabelle 10.000 Zeilen hat, dann hast du 10.000 X 10.000 = 100.000.000 Zeilen im Ram. Mach besser einen LEFT JOIN. MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.7.1 JOIN
__________________ Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn? |
| | |
| | |
| Neuer Benutzer Registriert seit: 24.08.2010
Beiträge: 21
PHP-Kenntnisse: Anfänger ![]() | Nö. ![]() Ich möchte gerne auch die Filialen, die Inventurdaten haben. Und natürlich auch die Inventurergebnisse, die mir momentan nicht geliefert werden. Also ALLE Filialen aus der Tabelle Filialen und die Filialen der Tabelle Inventuren die befüllte Felder haben. Genau das müsste mit LEFT JOIN gehen, so wie ich das gelesen habe. Also macht mir das GROUP BY die Abfrage wieder "kaputt"? |
| | |
| | |
| Neuer Benutzer Registriert seit: 24.08.2010
Beiträge: 21
PHP-Kenntnisse: Anfänger ![]() | JOIN ist ja tückisch! Ich habe den 'Fehler' gefunden! Es lag am GROUP BY. Erstens war die Reihenfolge die falsche, zweitens (und das meine ich mit tückisch) hat sich Abfrage die Filialen aus der "falschen Tabelle" geholt, nämlich aus der Inventur-Tabelle. Da aber alle Filialen aufgelistet sollen, muss ich natürlich explizit auf die Tabelle Filialen verweisen. Die Richtige Abfrage ist also: Code: SELECT inventuren.jahr,
filialen.nr,
filialen.filiale,
SUM(`BewPreis3`)AS SUMME1,
SUM(`Menge-Diff`) AS SUMME2
FROM filialen
LEFT JOIN inventuren ON filialen.nr = inventuren.nr
GROUP BY filialen.nr, jahr
ORDER BY nr, jahr
![]() So. Jetzt das ganze nur noch in eine Schleife packen, auslesen und in einer Tabelle ausgeben. Was meint ihr geht schneller: Die Umsätze auch noch dazujoinen (geht das überhaupt?) Oder in der Schleife dann doch noch mal eine Abfrage jeweils nach dem Umsatz durchführen? |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Abfrage von einer Abfrage | Datenbanken | 5 | 27.01.2011 23:31 | |
| Problem mit Abfrage - join, inner join, distinct? | Gachet01 | Datenbanken | 2 | 27.01.2011 06:49 |
| Optimierung einer Abfrage eines Datensatzes samt Vorgänger und Nachfolger | Sirke | Datenbanken | 7 | 28.04.2010 17:11 |
| result Variablen von SQL verbinden | vci | PHP Tipps 2010 | 15 | 05.02.2010 19:09 |
| Scriptsuche [Erledigt] SQL- Abfrage über 2 tabellen | ejim | Scriptbörse | 1 | 17.07.2009 21:10 |
| SQL Abfrage ohne DESC langsam | Thisi | Datenbanken | 5 | 07.01.2009 09:53 |
| Wiemache ich eine Abfrage über 3 Tabellen??? | djscaleo | Datenbanken | 8 | 05.01.2009 10:46 |
| MySQL - Fehler in einfacher Abfrage | oden | Datenbanken | 11 | 03.01.2009 20:03 |
| SELECT WHERE datetime abfrage - Optimierung | mrSpok | Datenbanken | 15 | 23.03.2006 19:08 |
| mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert | Datenbanken | 2 | 08.09.2005 11:59 | |
| [Erledigt] IF() abfrage in variable packen | PHP Tipps 2005 | 14 | 01.04.2005 17:23 | |
| Abfrage von Char-Feldern | Datenbanken | 9 | 04.02.2005 14:06 | |
| [Erledigt] Mysql Abfrage Problem! | PHP-Fortgeschrittene | 5 | 27.11.2004 10:22 | |
| Abfrage funktioniert zwar, aber nicht korrekt | Datenbanken | 2 | 16.08.2004 09:10 | |
| Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab | PHP Tipps 2004 | 4 | 12.07.2004 15:00 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| inventurergebnis ausrechnen, umsatz pro jahr mit sql ausgeben, sql umsatz jahr in group by durchschnittspreis or gemittelt or durchschnitt, sql jahr umsatz, row umsatz, mysql abfrage pro jahr umsatz, php round innerhalb sql, mysql_query mittelwerte, php |