php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.05.2008, 16:07  
Neuer Benutzer
 
Registriert seit: 18.05.2008
Beiträge: 14
Te7Ris befindet sich auf einem aufstrebenden Ast
Standard PHP+MYSQL+IF-Abfrage Problemchen...

Hallo,
ich habe ein kleines Problem. Bei folgendem query...

mysql_query("UPDATE ... SET x=IF(x+y=2,0,1), y=IF(x+y=2,0,1)");

... bekommt die spalte "x" nach der ersten if-Abfrage direkt den neuen Wert (0 o. 2)
zugewiesen, das heißt die zweite if-Abfrage ist verfälscht, da dort nicht mehr
der alte sondern bereits der neue x-Wert genommen wird...

kann mir jemand sagen, wie sich dieses Problem lösen lässt?

Gruß Maxi
Te7Ris ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.05.2008, 19:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ist das denn wirklich so (ich kanns nicht testen, haette aber spontan das Gegenteil behauptet)? Warum 0 oder 2, ich sehe 0 oder 1. Da du X und Y offenbar den gleichen Wert zuweisen moechtest, tu es doch dann auch einfach:

UPDATE table SET x = IF(x+y=2,0,1), y = x
Chriz ist offline  
Alt 18.05.2008, 21:55  
Neuer Benutzer
 
Registriert seit: 18.05.2008
Beiträge: 14
Te7Ris befindet sich auf einem aufstrebenden Ast
Standard

nein nein, das ist ein extrem vereinfachtes beispiel.. x,y soll nicht den
gleichen wert haben... und ja es ist leider so.. finde ich selbst etwas
verwunderlich...

hatte vorher 2 und 4 im beispiel verwendet... deswegen im text der
falsche wert..

Gruß
Te7Ris ist offline  
Alt 19.05.2008, 01:24  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dann selektier halt den Datensatz vorher, dann hast du ja alle alten Werte.
Chriz ist offline  
Alt 19.05.2008, 01:44  
Neuer Benutzer
 
Registriert seit: 18.05.2008
Beiträge: 14
Te7Ris befindet sich auf einem aufstrebenden Ast
Standard

jo möglich wär das schon, aber irgendwie unschön^.^ und langsamer
sicherlich auch, was mich nicht weiter stören würde, aber unter umständen
kann diese abfrage recht häufig in recht kurzer zeit erfolgen...

kennt sich keiner damit aus? irgendwer wird das doch studieren, oder so

Gruß
Te7Ris ist offline  
Alt 19.05.2008, 01:52  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ich glaube nicht dass eine einzige SELECT Abfrage performance-entscheidend ist. Und ich studiere "das" (Informatik). Aber was erwartest du fuer eine Loesung? Du musst irgendwie an die alten Werte kommen, also entweder sortierst du dein SET so, dass keine Abhaengigkeiten entstehen, was vielleicht garnicht moeglich ist, oder du musst anders an die alten Werte herankommen. Da wirst du entweder ein SELECT vorher abschicken muessen (soweit ich weiss ist ein Sub-SELECT dieser Art bei einem UPDATE nicht moeglich), die alten Werte in der selben Abfrage "irgendwie" cachen (wuesste nicht wie, wenn du dir eine Prozedur schreibst bist du auch nicht schneller dran) oder aber du rechnest einfach zurueck (wenn du vorher x=x+1 gerechnet hast, musst du eben danach mit x-1 wieder den alten Wert errechnen).

Mach dir doch um die Performance-Frage fuer einen Query keinen Kopf, das kannst du machen wenns soweit ist.

Aber lass mich raten, Browsergame?

Geändert von Chriz (19.05.2008 um 01:55 Uhr).
Chriz ist offline  
Alt 19.05.2008, 01:59  
Neuer Benutzer
 
Registriert seit: 18.05.2008
Beiträge: 14
Te7Ris befindet sich auf einem aufstrebenden Ast
Standard

du gefällst mir ^.^

ich denk ma kurz drüber nach...
mmh naja eigentlich nciht wirklich ein browsergame dafür hab ich keine
Zeit und sicherlich auch keine motivation :P sagen wir

"echtzeit"-2dengine

...

ist es vielleicht möglich, da die IF-abfrage bei beiden spalten (x und y) identisch ist, diese
nur einmal zu stellen? dann wäre die veränderung egal...

oder besteht vll ne möglichkeit in der serverconfig das sqlverhalten zu ändern?

Geändert von Te7Ris (19.05.2008 um 02:19 Uhr).
Te7Ris ist offline  
Alt 19.05.2008, 05:36  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hoffentlich nicht, sonst wird bei einem Serverumzug garantiert jemand verzweifelt die Koordinatenfehler suchen, weil die Einstellung eine andere ist ..

Nochmal: Ein Query bringt dich nicht um!

Was genau willst du denn berechnen?
Chriz ist offline  
Alt 19.05.2008, 08:43  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Vielleicht hilft Dir auch ein Update-Trigger. Oder vielleicht kannst Du das auch mit zwi UPDATEs mit WHERE Bedingung lösen.
David ist offline  
Alt 19.05.2008, 10:44  
Neuer Benutzer
 
Registriert seit: 18.05.2008
Beiträge: 14
Te7Ris befindet sich auf einem aufstrebenden Ast
Standard

mmh keinen Schimmer, was ein Update-Trigger ist, bzw bewirkt..


naja schade, dass es scheinbar nicht wie gewünscht funktioniert, dann
sind if-abfragen und die distanzberechnung sinnlos und nicht wie ich
gehofft hatte eine kleine, sauber minimierung...

Gruß

Geändert von Te7Ris (19.05.2008 um 10:47 Uhr).
Te7Ris ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL Abfrage als PHP class d3rbastl3r PHP Tipps 2008 2 11.06.2008 15:41
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
MySQL Abfrage von Ver. 5 für Ver 3. des MySQL Servers FireFIghter Datenbanken 3 02.02.2007 17:18
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL Abfrage Von / Bis andrew22 Datenbanken 1 02.10.2006 11:04
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
komplizierte mysql abfrage php_frage PHP Tipps 2007 5 28.12.2005 17:55
mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
einfache mysql abfrage und mysql update haut nicht ganz hin djrace PHP Tipps 2005-2 6 12.08.2005 15:28
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql update 0 1 if abfrage

Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum