Hi,
nach dem ich das mit den Unions erfolgreich umgesetzt habe (
mehrere-spalte-im-group-zusammenfassen) stehe ich mit genau diese Abfrage vor dem nächsten Problem.
Hier noch mal das Statement zur besseren Übersicht worum es geht:
Code:
Select Feld from (
select s_vl_felgengroesse as Feld from Reifenlager t1 union
select s_vr_felgengroesse as Feld from Reifenlager t1 union
select s_hr_felgengroesse as Feld from Reifenlager t1 union
select s_hl_felgengroesse as Feld from Reifenlager t4) t21
order by feld
(Das man das vielleicht auch etwas anders schreiben kann, sollte jetzt erst mal keine Rolle spielen, außer es dient der Problemlösung).
Es wird also eine Liste aller vorhandenen Felgengrößen (diese werden per Hand eingetragen, es gibt also keine Referenz) aus allen 4 Rädern gebildet.
Die gleiche Abfrage wird auch noch mit anderen Felder aus der Tabelle gemacht, insgesamt 10 mal.
Das das ganze möglichst ohne große Wartezeiten ablaufen soll, passiert das in einem Thread, der also 10 mal ein solches Statement absetzt und das Result dann an's Hauptprogramm liefert. Und der Thread wird immer aufgerufen, wenn der User das Formular wieder neu öffnet.
Die Tabelle, aus der die Daten abgerufen wird, hat ca. 850 Datensätze.
So, das läuft im Grund auch exakt so, wie ich es mir vorgestellt habe.
Nur kam es seit dem Code vermehrt zu "Lost Connection during
Query". Nach langer Suche bin ich auch darauf gekommen, dass es genau diese Abfragen sind, die den Verbindungsabbruch auslösen.
Diese ganzen Unions und dann auch mal gleich 10 mal hintereinander, von 8-10 Usern im Tagesbetrieb und dass alle paar Minuten ist dann wohl doch irgendwie zu viel (Das ist eine Annahme, keine Behauptung
)
Meine erste Lösung wäre es jetzt ein View im
MySQL zu erzeugen, welches mir quasi eine Tabelle bereitstellt, in deren Felder die Felgengröße schon kumuliert zur Verfügung steht. Das würde die Last, wenn es denn die Ursache ist, schon mal einiges verringern.
Aber
MySQL läßt mich nicht.
Das Erzeugen eines Views mit:
Code:
Create View 'test' as
Select Feld from (
select s_vl_felgengroesse as Feld from Reifenlager t1 union
select s_vr_felgengroesse as Feld from Reifenlager t1 union
select s_hr_felgengroesse as Feld from Reifenlager t1 union
select s_hl_felgengroesse as Feld from Reifenlager t4) t21
order by feld
wird mit den Meldung
Error 1349: View's Select contains a subquery in the From clause SQL Statement.
Wie müßt das Statement lauten, damit es als View akzeptiert wird?
Oder fällt jemand eine andere Möglichkeit ein, das Problem zu umgehen?
Ich nutze in diesem Projekt Zeos 6.6.0-Stable unter D7. Es ist ein altes Projekt, dass ich erst mal nicht umstellen will.
Die Abfragen im Thread laufen über die gleich ZConnection. Ist das vielleicht das Problem? Oder sollte das nicht stören?
Da ich nicht wußte, welches ich jetzt als Titel nehmen soll, hab ich mal beides reingesetzt.