Veröffentlicht 8. Juli 200817 j Hallo, hier kommt meine Frage, angenommen, ich habe folgende mysql Anfrage: SELECT tat.* from tbldaten dat, tblkopf kopf where dat.ID=kopf.ID and kopf.Project_Nr=300 Damit erhalte ich alle Sätze, die diesen Suchkriterien entsprechen, wie wandle ich die Anfrage jedoch so um, dass ich gerade in den Spalten die Felder ändern kann, deren Zeilen nach bestimmten Suchkriterium geliefert wurden, so wie in dem obigen Beispiel. Sagen wir mal so, ändere tbldaten.Feld1=1, tbldaten.Feld2=500 where tbldaten.ID=tblkopf.ID and kopf.Project_Nr=300 Also, dass die Änderung in Zeilen vorgenommen wird, die dem Suchkriterium entsprechen. Nach einer Lösung habe ich bisher vergeblich gesucht.
8. Juli 200817 j Sowas? update tbldaten set tbldaten.Feld1=1, tbldaten.Feld2=500 where tbldaten.id in ( SELECT dat.id from tbldaten dat, tblkopf kopf where dat.ID=kopf.ID and kopf.Project_Nr=300) Frank
8. Juli 200817 j So in etwa, jedoch unterstützt installierter MYSQL Server keine verschachtelte Anfragen, das geht erst ab höheren MYSQL Versionen, und auf den Server habe ich keinen Einfluß, hinsichtlich seinem Upgrade.
8. Juli 200817 j PHP Version 5.2.4 MYSQL 5.0.45 Wie ich gerade sehe, gar nicht mal so alt, jedoch funzen die verschachtelte Anfragen trotzdem nicht
8. Juli 200817 j Ich habe genauere Fehlerquelle notiert: You can't specify target table 'tbldaten' for update in FROM clause
8. Juli 200817 j Das hat nichts damit zu tun, das mysql keine Subselects unterstützen würde - der Update ist ganz einfach falsch: update tbldaten set tbldaten.Feld1=1, tbldaten.Feld2=500 where tbldaten.id in ( SELECT kopf.id from tblkopf kopf where kopf.Project_Nr=300); Dim
8. Juli 200817 j So hat es bei mir noch funktioniert, ich habe es so schon ausprobiert, gerade unmittelbar davor, als ich meinen Betrieb verlassen habe, mit verschachtelteten Anfrage, so wie jetzt dr.dimitri angab. Jedoch sind verschachtelte Anfragen langsamer, als die normalen, und schade, dass es anders nicht geht.
8. Juli 200817 j Langsamer als welche anderen? Sind die Felder tbldaten.id und project_nr indiziert? Dim
9. Juli 200817 j DIe Aussage kommt persönlich von Mysql Entwicklern, da jede Anfrage intern optimiert wird, um die Anfrage so schnell, wie möglich durchführen zu können. Angeblich bei einer verschachtelten Anfrage ist es nicht der Fall. Mir ist es im großen und ganzen egal, die Tatsache bleibt weiterhin die Tatsache.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.