negieren von Bit-Feldern
Markus
- datenbank
Hallo Forum...
Ich weiß nicht genau wie ob eine Möglichkeit besteht ein Datenbankfeld (z.B. SET of '0','1' oder BOOL) mit einem UPDATE umzukeheren.
Also wenn 1 drinsteht auf 0 setzen und umgekehrt. Ich hab mich jetzt schon blöd gesucht, darum hoffe ich das hier jemand eine patente Lösung kennt!
Ich benutze MySQL 4.x
Gruß, Markus
Sup!
Warum kannst Du den Wert nicht auslesen, negieren, wieder reinschreiben? Muss das die DB machen?
Gruesse,
Bio
Sup!
Warum kannst Du den Wert nicht auslesen, negieren, wieder reinschreiben? Muss das die DB machen?
Ja, das würde ich bevorzugen. Oder nutzt Du mehr Querys als nötig? Denke auf Dauer geht das auf die Performance?!
Gruesse,
Bio
Hallo Forum...
Ich weiß nicht genau wie ob eine Möglichkeit besteht ein Datenbankfeld (z.B. SET of '0','1' oder BOOL) mit einem UPDATE umzukeheren.
Also wenn 1 drinsteht auf 0 setzen und umgekehrt. Ich hab mich jetzt schon blöd gesucht, darum hoffe ich das hier jemand eine patente Lösung kennt!
Ich benutze MySQL 4.x
Gruß, Markus
OK, zur Info: ich beschränke mich beim Umschalten auf die Werte -1 und 1 und schalte um indem ich mit -1 multipliziere.
Vielen Dank für ihre Aufmerksamkeit!
Hallo Forum...
Ich weiß nicht genau wie ob eine Möglichkeit besteht ein Datenbankfeld (z.B. SET of '0','1' oder BOOL) mit einem UPDATE umzukeheren.
Also wenn 1 drinsteht auf 0 setzen und umgekehrt. Ich hab mich jetzt schon blöd gesucht, darum hoffe ich das hier jemand eine patente Lösung kennt!
Ich benutze MySQL 4.x
Gruß, Markus
Hab noch eine weitere Möglichkeit gefunden, die ggf. sogar noch besser ist als das multiplizieren mit -1
set x = abs(x-1)
Gruß, Markus
Sup!
Also ich habe ja keine Ahnung von der db, aber vielleicht gibt es ja eine Skriptsprache oder stored procedures oder so, die Dir dabei helfen können.
Du musst natürlich ggf. aufpassen wegen konkurrierender Zugriffe, gegenseitigem Ausschluss, bla.
Aber im Prinzip ist es nicht die Aufgabe einer db, irgendwelche "Business-Logik" zu erledigen.
Gruesse,
Bio
Sup!
Also ich habe ja keine Ahnung von der db, aber vielleicht gibt es ja eine Skriptsprache oder stored procedures oder so, die Dir dabei helfen können.
Klar geht das, aber wie ich schon sagte, muß ich nicht unbedingt Performance verbraten, wenn es nicht nötig ist.
Du musst natürlich ggf. aufpassen wegen konkurrierender Zugriffe, gegenseitigem Ausschluss, bla.
Aber im Prinzip ist es nicht die Aufgabe einer db, irgendwelche "Business-Logik" zu erledigen.
Grundsätzlich denke ich, dass die Datenbank das machen soll, was sie kann. Also mit Datensätzen arbeiten. Dazu gehört für mich auf jeden Fall auch das im Eröffnungposting geschilderte Problem!
Also - ich persönlich lasse die Datenbank soviele Operationen wie möglich übernehmen weil ich allein dadurch auf datentransfer zwischen script/DBMS und der Datenbank verzichten kann - all dieses kostet Zeit und geht zu Lasten der Performance.
Oder?
Gruesse,
Bio
Hi,
warum schneller reiten wollen, wenn man noch gar nicht vernünftig auf dem Pferd sitzen kann?
(Das betrifft das Thema "oh, gott, meine Performance")
Wie du boolsche (oder von aus auch bit) Felder negieren kannst, solltest du ja jetzt auf mindestens 3 Arten gelernt haben. Also sind doch alle Probleme aus dem Weg geräumt, oder?
Gut Nacht
Frank
Hallo Forum...
Ich weiß nicht genau wie ob eine Möglichkeit besteht ein Datenbankfeld (z.B. SET of '0','1' oder BOOL) mit einem UPDATE umzukeheren.
Also wenn 1 drinsteht auf 0 setzen und umgekehrt. Ich hab mich jetzt schon blöd gesucht, darum hoffe ich das hier jemand eine patente Lösung kennt!
Ich benutze MySQL 4.x
Gruß, MarkusHab noch eine weitere Möglichkeit gefunden, die ggf. sogar noch besser ist als das multiplizieren mit -1
set x = abs(x-1)
Geht sogar ohne abs() :
set x = 1 - x
Im Übrigen würde ich auch soviel wie möglich von der Datenbank erledigen lassen - die sollte auf größtmögliche Effizienz optimiert sein. Jede Kommunikation mit einem anderen Programm bremst beide: Erst muss das andere Programm auf die Daten von der Datenbank warten, dann muss die DB "darauf warten" (warten tut sie sowieso, solange sie nichts zu tun hat), dass die Daten zurückkommen und sie wieder wegspeichern. Wenn die DB die Rechnung durchführt, sind die Wege kürzer und es eine "Kommunikation zwischen DB und Programm" weniger - das ist IMMER schneller. Und eleganter, auch wenn man keine Geschwindigkeit braucht.
Viele Grüße
Urmel
set x = 1 - x
Ich finde, daß das mit IF elegenater geht.
Sup!
Also wenn mysql 4 subselects kann, dann kann man ja vielleicht schreiben:
update boolean from bla (select abs(boolean - 1) from bla)
Whatever.
Gruesse,
Bio
echo $begrüßung;
Ich weiß nicht genau wie ob eine Möglichkeit besteht ein Datenbankfeld (z.B. SET of '0','1' oder BOOL) mit einem UPDATE umzukeheren.
Die Negation ist eine Umkehrung.
Also wenn 1 drinsteht auf 0 setzen und umgekehrt.
NOT 0 ergibt 1 und NOT 1 ergibt 0.
echo "$verabschiedung $name";