SELECT Ergbnis zwischenspeichern und mehrmals verwenden

Defan

Benutzer
Beiträge
7
ich schon wieder ^^
hab jetzt ne große select-anweisung, die in der WHERE-clausel öfters mal in der selben SELECT nachschaut ob es eine id gibt. also ".... WHERE id IN (SELECT id....)..." und das eben öfters...
das problem ist jetzt, dass die anweisung so groß ist, dass "Too high level of nesting for select" kommt...
ich weiß zwar nicht, ob das was helfen würde, aber kann man diese SELECT zwischenspeichern und dann als Ergbnis-menge bzw "variable" immer wieder durchsuchen??

danke
 
Werbung:

Charly

Datenbank-Guru
Beiträge
306
Hallo Defan,

Du könntest dir eine VIEW bauen um das Problem zu umgehen.

Gruß Charly
 

ukulele

Datenbank-Guru
Beiträge
4.394
Man kann in einem SELECT keine Variablen deklarieren, somit auch in den meisten Fällen keine Variablen nutzen, schon gar keine Arrays mit mehreren Werten oder dergleichen.

Der eleganteste Weg wäre hier tatsächliche die View wie Charly schon sagte. Aber bei der Fehlermeldung scheint es als hättest du ziemlich viel verschachtelt, ich hatte sowas bisher nur bei Triggern die sich endlos gegenseitig gestartet haben.
 

Charly

Datenbank-Guru
Beiträge
306
Hallo Defan,

ich weiß zwar nicht, ob das was helfen würde, aber kann man diese SELECT zwischenspeichern und dann als Ergbnis-menge bzw "variable" immer wieder durchsuchen??

Dazu müsstest Du eine Stored Procedure (ab mySQL 5 geht das ja) schreiben. Damit kannst Du dann auch Schleifen und Variablen verwenden.

Gruß Charly
 

Defan

Benutzer
Beiträge
7
sorry für die späte antwort... also mit views gehts irgendwie nicht... allein schon deswegen, wenn alles mehr als einmal aufgerufen wird, dann existiert der view ja schon... und auch so gabs irgendein problem... ich probiers jetzt nochmal mit der stored procedure
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Eine View sollte auch durchgehend existieren, sie wird ja nicht während eines SELECTs erstellt und dann wieder verworfen. Die View ist immer aktuell, muss also nie neu erstellt werden. Auf die View kann man dann jedesmal einen SELECT machen, der aber dann wesentlich simpler ausfällt.
 
Oben