Große Abfrage, großes Problem
Eric
- datenbank
0 Vinzenz Mai0 Eric
0 Ilja
Guten Abend
zuerst ein Screenshot, mit dessen Hilfe ich mein Problem erläutern möchte:
Also was macht die Abfrage:
Tabelle A ( patern_main ) enthält die Ausgangswerte
Tabellen B ( pattern_stats ) und C ( pattern_kosten ) enthalten Daten, die über die patternID eindeutig einem Eintrag in Tabelle A zuzuordnen sind. Tabellen B und C können jedoch beliebig viele Daten enthalten.
Die Endauswertung findet übrigens mit PHP statt. Mit der o.g. Ausgabe könnte ich zwar die benötigten Daten extrahieren, doch denke ich, dass das auch eleganter gelöst werden kann.
Mehrere getrennte Abfragen kommen für mich nicht in Frage, da dies deutlich mehr Ressourcen fressen würde.
Wie ist das Problem zu lösen?
Bin für jeden Hinweis dankbar.
MfG
Eric
Hallo Eric,
zuerst ein Screenshot, mit dessen Hilfe ich mein Problem erläutern möchte:
was soll Dein Screenshot erläutern? Dass Du sinnvollerweise Dein SQL-Statement hier gepostet hättest? Ja, das ist ein Problem.
Die Endauswertung findet übrigens mit PHP statt. Mit der o.g. Ausgabe könnte ich zwar die benötigten Daten extrahieren, doch denke ich, dass das auch eleganter gelöst werden kann.
Was verstehst Du unter eleganter? Soweit ich Dein Statement sehe (die Daten kenne ich ja nicht) benötigst Du jede vorkommende Tabelle, somit jeden entsprechenden Join. Wo ist Dein Problem?
Was sagt übrigens EXPLAIN zu Deiner Abfrage?
Wie ist das Problem zu lösen?
Welches Problem? Könntest Du uns dies bitte erläutern. Ich kann keines sehen. Und bitte gib an, welche MySQL-Version Du verwendest. Da Du Klammern setzt, vermute ich eine 5.x.
Freundliche Grüße
Vinzenz
Hallo!
Wo ist Dein Problem?
Mh ok, vielleicht ist das ein wenig untergegangen. Mir geht es eigentlich eher um einen generellen Aspekt. Der Screenshot sollte nur ein Beispiel sein.
Meine Frage ist, wie man mit Hilfe einer einzigen Abfrage mehrere Tabellen so verknüpft, dass man möglichst leicht auswertbare Datenpakete erhält.
Als Beispiel wählte ich Tabellen A, B und C mit folgenden Eigenschaften:
A: Die Haupttabelle mit fortlaufendem Primärschlüssel, sowie weiteren Daten, z.B.
ID | wert1 | wert2 | wert3
B und C: beliebig viele Zuordnungen zu den Primärschlüsseln von A
Beispiele:
B:
ID | name | wert
C:
ID | subID | min | max
Ich hoffe, mein Problem ist nun verständlicher.
Was sagt übrigens EXPLAIN zu Deiner Abfrage?
Achja, ich nutze 4.1.13-nt, setze aber lieber eine Klammer zu viel als eine zu wenig.
Schönen Abend noch
Eric
yo,
zum einen schließe ich mich Vinzenz an, wir können ja nur nach einer besseren lösung suchen, wenn wir wisse, was du überhaupt machen willst. so ist das nicht ganz klar.
allerdings sehe ich ein problem mit dem dritten inner join auf die tabelle items_main. der macht in meinen augen wenig sinn, besser wäre hier wohl ein weiterer left join. ansonsten gehen dir datensätze verloren, die du vorher mit einem left join ausgewählt hast.
Ilja