Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

[MySQL] SELECT SUM() in UPDATE

Diskussion: [MySQL] SELECT SUM() in UPDATE im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hab mal eine kurze Frage. Das hier funktioniert bei mir einwandfrei: Code: UPDATE `up_topics` SET `stat_posts`=(SELECT COUNT(*) FROM `up_posts` ...

Antwort
Alt 18.12.07, 14:14   #1 (permalink)
 
Registriert seit: 11.11.07
Friedrich Leistung: Facit NTK
Friedrich eine Nachricht über ICQ schicken
Likes: 0
Standard [MySQL] SELECT SUM() in UPDATE

Anzeige

Hab mal eine kurze Frage.
Das hier funktioniert bei mir einwandfrei:

Code:
UPDATE `up_topics`
		SET `stat_posts`=(SELECT COUNT(*) FROM `up_posts` WHERE `sub`=`up_topics`.`id`)
		WHERE id=0
Wieso gibt es hier aber
Code:
UPDATE `up_forums`
SET `stat_posts`=(SELECT SUM(`stat_posts`) FROM `up_forums` WHERE `sub`=`up_forums`.`id`)
WHERE `id`=0
Zitat:
#1093 - You can't specify target table 'up_forums' for update in FROM clause
bzw. wie bekomme ich das Update so wie erwünscht hin?
Friedrich ist offline   Mit Zitat antworten
Alt 18.12.07, 16:03   #2 (permalink)
fetzer
Guest
 
Likes:
Standard

Und die Dokumentation gibt wiedermal die Antwort...

http://dev.mysql.com/doc/refman/5.1/...trictions.html
Zitat:
Im Allgemeinen können Sie eine Tabelle nicht in einer Unterabfrage modifizieren und zugleich mit einem Select abfragen. Diese Beschränkung gilt beispielsweise für Anweisungen der folgenden Form:

? DELETE FROM t WHERE ... (SELECT ... FROM t ...);
? UPDATE t ... WHERE col = (SELECT ... FROM t ...);
? {INSERT|REPLACE} INTO t (SELECT ... FROM t ...);
Den Rest der Doku kannst du dir selbst anschauen, lesen wirst du hoffentlich können.
  Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 18.12.07, 22:22   #3 (permalink)
Themenstarter
 
Registriert seit: 11.11.07
Friedrich Leistung: Facit NTK
Friedrich eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
Original von fetzer
lesen wirst du hoffentlich können.
Das nehme ich als Beleidigung.
Würde jeder erst tausend mal recharchieren, wüsste zu allem
passende Suchbegriffe etc. bräuchte man keine Communities mehr!
Wie hätte ich auf den resource locator kommen sollen?

Habo ist nicht mehr das, was es mal war...

Trotzdem danke für den Link.
Friedrich ist offline   Mit Zitat antworten
Alt 18.12.07, 22:26   #4 (permalink)
 
Benutzerbild von ChiefWiggum
 
Registriert seit: 09.10.07
ChiefWiggum Leistung: 8086
ChiefWiggum eine Nachricht über ICQ schicken
Likes: 11
Standard

Zitat:
Original von Friedrich
Zitat:
Original von fetzer
lesen wirst du hoffentlich können.
Das nehme ich als Beleidigung.
Habo ist nicht mehr, was es mal war...

Trotzdem danke für den Link.
Hi!

Man kann auch echt übertreiben.
Das Habo nicht mehr so ist, liegt an der Kiddie-Überflutung.
Man muss sich erst von Kiddie zu Würdigen hocharbeiten.

Zu deiner "Beleidigung": Viele (Kiddies) lesen nicht, und googlen erst recht nicht


MfG
__________________
Be the source always with you.
ChiefWiggum ist offline   Mit Zitat antworten
Alt 18.12.07, 22:34   #5 (permalink)
Themenstarter
 
Registriert seit: 11.11.07
Friedrich Leistung: Facit NTK
Friedrich eine Nachricht über ICQ schicken
Likes: 0
Standard

"Zu deiner "Beleidigung": Viele (Kiddies) lesen nicht, und googlen erst recht nicht"
Dann sind kiddies der Grundbaustein für Communities bzw der Teil
an jemandem, der kiddy ist. Apropo kiddy.
leetspeak, scriptkiddy, kiddy - Diese Begriffe alleine schon zu verwenden
ist für mich "kiddy". Was hat deine Aussage denn hier mit mir zutun.
Ich sage nur nebenbei, wie ich was aus meiner Sicht sehe und debattiere
hier nicht subordinierten Mitläuferscheiß.
Friedrich ist offline   Mit Zitat antworten
Alt 19.12.07, 16:29   #6 (permalink)
 
Benutzerbild von ChiefWiggum
 
Registriert seit: 09.10.07
ChiefWiggum Leistung: 8086
ChiefWiggum eine Nachricht über ICQ schicken
Likes: 11
Standard

lol ^^

Vll meinte er nur damit das du das lesen sollst was viele hier nicht tuen

aber egal

ciao!
__________________
Be the source always with you.
ChiefWiggum ist offline   Mit Zitat antworten
Alt 19.12.07, 19:50   #7 (permalink)
fetzer
Guest
 
Likes:
Standard

Vielleicht meinte ich aber genau das, was du gerade ansprichst. Es ist wirklich nicht zu viel verlangt, sich mal eine Dokumentation durchzulesen oder hierbei nach "Subquerys" oder Definitionen/Syntaxen von SELECT und UPDATE-Statements zu suchen. Es darauf zu schieben, dass einem nicht die passenden Suchbegriffe eingefallen sind halte ich für pure Faulheit, etwas (logisch) Nachdenken bringt einen meistens auf die richtige Spur, die man eben auch verfolgen muss.

Zitat:
Habo ist nicht mehr das, was es mal war...
"Achja, früher war alles besser... Früher wurde einem die Google- und Dokudurchsucherei einfach von anderen selbstverständlich abgenommen. Aber heute maulen alle nur darüber, wenn man selbst mal nicht auf die Idee kommt, einen Blick in die Doku zu werfen oder wenn einem die richtigen Suchwörter nicht einfallen. Ausserdem ist die ja so groß, da findet man doch garnichts..."
Solche Dinge hört man so oft, selbst im Habo ist anscheinend diese Meinung jetzt bald bei jedem zweiten User zu finden. Tut mir leid, wenn ich dich vorschnell verurteilt habe, aber es ist nunmal nicht besonders schwer eine Dokumentation ( Ich spreche nicht von Suchmaschinen, die mit 5.000.000 Ergebnissen kommen ) nach Begriffen, die du sicherlich schon einmal gelesen oder gehört hast, zu durchsuchen und die Artikel lesen, auch wenn sie nicht sofort all deine Fragen beantworten.

Zitat:
Dann sind kiddies der Grundbaustein für Communities bzw der Teil
an jemandem, der kiddy ist.
Warum soll man nicht auf hohem Niveau diskutieren können? Warum kann man sich bei Fragen nicht selbst mal anstrengen, sondern fragt einfach mal? "Vielleicht weiss es ja einer, dann wär die Sucherei ja eh umsonst." Wenn du gefragt hättest, warum das mit den Statements so ist, dann wäre das um einiges schwieriger gewesen und hier wäre eine solche Frage durchaus sinnvoll gewesen, denn die Antwort bekommt man nicht einfach so durch die normale Dokumentation oder über Google. Nur leider interessiert das hier keinen, es geht nur noch ums suchen und ums finden, nicht mehr ums wissen oder ums erfahren. Und das hat wahrlich nichts mit Niveau zu tun.

Bitte nimms nicht übel, du bist halt der, den es jetzt erwischt hat Aber man kann es sich ja mal zu Herzen nehmen und das nächste mal einfach überlegen, was man sonst noch ausser Google nach welchen Begriffen durchsuchen könnte.
  Mit Zitat antworten
Alt 19.12.07, 20:52   #8 (permalink)
 
Registriert seit: 17.02.06
Harry Boeck Leistung: Facit NTK
Likes: 0
Standard

Also, Jungs: Das Ursprungs-Problem von Friedrich war mitnichten trivial.
Und es war mitnichten als Erwartungswert aus der Dokumentation zu ziehen.

Daher kann ich Friedrich gut verstehen, wenn er sich beleidigt fühlt.
Kühlt doch mal etwas ab und kommt auf das fachliche Problem zurück!
Das ist interessanter als das Rumreiten auf Vorwürfen.

----

Es ist überhaupt nicht unlogisch, zu erwarten, daß die Unterabfrage ausführbar ist.
Das ist sie nämlich erstmal von der reinen Anwendbareit der Ausdrucksmittel her.
Und die Bemerkung, auf die fetzer verweist, steht nicht umsonst im Sonderteil "Feature-Beschränkungen" (der für normale Nutzung eigentlich nicht notwendig sein sollte).

Etwas anderes ist, WIE sie genau im Kontext des Gesamtausdrucks ausgeführt werden könnte und was dann an eventuell unterschiedlichen Ergebnissen zu erwarten wäre.

WENN man davon ausgeht, daß die Unterabfrage EINMALIG VOR dem Update ausgeführt wird, stellt die Summe eine Konstante im Update dar.

Dieser Fall läßt sich aber besser als bei Friedrichs Eingangsbeispiel (besser lesbar und verstehbar und vor allem unabhängig von eventuellen SQL-Maschinen-Eigenwilligkeiten und -Weiterentwicklungen) dadurch realisieren, daß die Formulierung des ganzen auf den Inhalt angepaßt wird. Soll heißen: EXTRA Abfrage VOR dem Update.

WENN man dagegen davon ausgeht, daß die Unterabfrage für jedes Update-Element erneut aktuell bestimmt werden soll, wäre ihr Inhalt eventuell eine Variable, die von allen soweit durchgeführten Updates abhängig ist.

Ich vermute aber, daß es bei Friedrich um erstere Interpretationsvariante geht.
Harry Boeck ist offline   Mit Zitat antworten
Alt 19.12.07, 21:26   #9 (permalink)
 
Registriert seit: 17.10.06
:::Lük::: Leistung: Facit NTK
:::Lük::: eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
Original von AlterHacker
Man muss sich erst von Kiddie zu Würdigen hocharbeiten.
Soso...dann definiere doch mal "würdig".
:::Lük::: ist offline   Mit Zitat antworten
Alt 20.12.07, 13:40   #10 (permalink)
Administrator
 
Benutzerbild von Mackz
 
Registriert seit: 02.10.01
Mackz Leistung: Pentium IMackz Leistung: Pentium I
Likes: 30
Standard

Leute, bleibt doch bitte bem Thema.
__________________
RL sux big time... auch 2012!

Deleting pr0n is like killing your best friend

[HaBo] bei Facebook - Werde Fan
Mackz ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » [MySQL] SELECT SUM() in UPDATE
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL InnoDB deadlock bei concurrent SELECT..FOR UPDATE SysLord Code Kitchen 0 06.04.09 23:32
Visual Basic MySQL - select Pat90 Code Kitchen 2 27.03.09 19:31
komplexerer select easteregg (Web-) Design und webbasierte Sprachen 11 10.12.08 13:28
mysql automatisches update Tabelle Dawen Applikationen 4 05.04.08 14:50
[MySQL] SELECT SUM() in UPDATE Friedrich Code Kitchen 1 18.12.07 16:03


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61