Ich bin derzeit damit beschäftigt, eine Art Filter zu implementieren, für den ich eine INNER JOIN-Klausel für jedes "Tag" generieren muss, nach dem gefiltert werden soll.
Das Problem ist, dass ich nach einer ganzen Reihe von SQL eine Tabelle habe, die alle Informationen enthält, die ich für meine Auswahl benötige, aber ich brauche sie erneut für jeden erzeugten INNER JOIN
Das sieht im Wesentlichen so aus:
SELECT
*
FROM search
INNER JOIN search f1 ON f1.baseID = search.baseID AND f1.condition = condition1
INNER JOIN search f2 ON f2.baseID = search.baseID AND f2.condition = condition2
...
INNER JOIN search fN ON fN.baseID = search.baseID AND fN.condition = conditionN
Das funktioniert, aber ich würde es viel lieber sehen, wenn die "Such"-Tabelle temporär wäre (sie kann um mehrere Größenordnungen kleiner sein, wenn sie keine normale Tabelle ist), aber das gibt mir einen sehr ärgerlichen Fehler: Can't reopen table
Einige Recherchen haben ergeben dieser Fehlerbericht aber die Leute bei MySQL scheinen sich nicht darum zu kümmern, dass eine so grundlegende Funktion (eine Tabelle mehr als einmal zu verwenden) nicht mit temporären Tabellen funktioniert. Ich stoße bei diesem Problem auf eine Menge Skalierbarkeitsprobleme.
Gibt es eine praktikable Lösung, bei der ich nicht potenziell viele temporäre, aber sehr reale Tabellen verwalten muss oder eine riesige Tabelle mit allen Daten darin pflegen muss?
Mit freundlichen Grüßen, Kris
[zusätzlich]
Die GROUP_CONCAT-Antwort funktioniert in meiner Situation nicht, weil meine Bedingungen mehrere Spalten in einer bestimmten Reihenfolge sind, es würde ODERs aus dem machen, was ich brauche, um UNDs zu sein. Sie hat mir jedoch geholfen, ein früheres Problem zu lösen, so dass die Tabelle, ob temporär oder nicht, jetzt nicht mehr erforderlich ist. Wir haben einfach zu allgemein für unser Problem gedacht. Die gesamte Anwendung von Filtern wurde nun von etwa einer Minute auf weniger als eine Viertelsekunde verkürzt.