mySQL Tabelle->Tabelle
micha
- datenbank
Frage:
Habe 2 Tabellen angelegt
In Tabelle1 wird SpalteA und SpalteB verglichen und als Ergebnis der Wert aus SpalteC ausgegeben. Das funkt auch prima.
Der Wert soll dann in Tabelle2 als Selektierung einer Reihe dienen.
Antwort:
Sowas geht in mySQL nicht, da es in der derzeitigen Version keine Subselects unterstützt. Da mußt Du schon 2 Queries machen (erst die innere, dann mit dem Resultat die äußere bedienen).
Frage darauf:
Wie übergeb ich das Resultat an die 2te Tabelle. Brauch irgend einen Ansatz.
Danke im vorraus, Micha
Hi,
Wie übergeb ich das Resultat an die 2te Tabelle.
der erste Select erzeugt ein Ergebnis, das derjenige erfährt, der ihn abgesetzt hat. Dieser "er" muss nun das Ergebnis auswerten und daraufhin die _zweite_ (von der ersten ansonsten absolut unabhängige) Abfrage richtig generieren - so, als wäre es die erste.
Cheatah
Hi Micha,
Antwort:
Sowas geht in mySQL nicht, da es in der derzeitigen Version keine
Subselects unterstützt. Da mußt Du schon 2 Queries machen (erst die
innere, dann mit dem Resultat die äußere bedienen).
Frage darauf:
Wie übergeb ich das Resultat an die 2te Tabelle. Brauch irgend einen
Ansatz.
mir ist nicht ganz klar, wie Deine Frage mit der vorherigen Antwort zusammenhängt.
Ein Subselect ist ja das Ergebnis einer "inneren" Abfrage, welches selbst innerhalb einer "äußeren" Abfrage syntaktisch verwendet wird, als wäre es eine statische Tabelle.
Die Datenbank-Engine führt dabei im Wesentlichen zuerst die "innere" Abfrage aus, speichert implizit deren Ergebnis irgendwo dynamisch zwischen und führt dann die "äußere" Abfrage aus, wobei sie weiß, daß das Objekt hier keine "richtige" Tabelle ist.
Letzteres kann mySQL nicht "von selbst". Du mußt also eine "richtige" Tabelle nehmen, um das Ergebnis dort explizit zwischenzuspeichern.
Wäre dies eine normale "statische" Tabelle, dann bestünde die Gefahr, daß zwei gleichzeitig laufende Instanzen Deines Programms sich beim Versuch, eine Tabelle mit demselben Namen anzulegen, in die Quere kommen.
Um dies zu vermeiden, unterstützt mySQL ein anderes Feature, nämlich temporäre Tabellen. Syntaktisch sind diese (fast) identisch zu statischen Tabellen; sie existieren jedoch nur für diesen einen Prozeß (Sichtbarkeit ebenso wie Lebensdauer).
Viele Grüße
Michael