Hallo allerseits,
zugegeben, eine etwas abwegige Frage. Gibt es eine Möglichkeit, Elemente zu finden, die in der Datenbank eine bestimmte Farbe haben? Kann es mir kaum vorstellen, aber vielleicht gibt es ja einen “Trick”
Schöne Grüße
Martin
Hallo allerseits,
zugegeben, eine etwas abwegige Frage. Gibt es eine Möglichkeit, Elemente zu finden, die in der Datenbank eine bestimmte Farbe haben? Kann es mir kaum vorstellen, aber vielleicht gibt es ja einen “Trick”
Schöne Grüße
Martin
Wie kommen/kamen denn diese Elemente zu ihrer Farbe?
Durch “Massenbearbeitung” in der mAirList-DB.
… also keine automatische Zuweisung infolge des Elementtyps. Korrekt?
Korrekt! Genau so ist es.
Kleiner Funfact: Die Frage habe ich mir heute selbst gestellt…
Mit Bordmitteln aus der Oberfläche geht das nicht.
Torben hat mir gerade noch zwischen Tür und Angel zugeflüstert: Wenn du den Hex-Code der zu suchenden Farbe kennst, lässt sich das über einen SQL-Befehl suchen.
Wie müsste der SQL-Befehl konkret heißen?
Zwei meiner möglichen Anwendungsfälle:
1.) Elemente, die die Farbe #0000ff haben, sollen per SQL künftig z.B. #00ff00 erscheinen.
2.) Elemente, bei denen Standard-Attribut XY= -1 ist, sollen eine bestimmte Farbe (z.B. #00ff00) bekommen, wenn sie diese nicht schon haben.
Farbe ändern:
UPDATE items
SET color='#0000FF'
WHERE color='#00FF00';
Farbe basieren auf Attribut setzen:
UPDATE items
SET color='#00FF00'
WHERE idx IN
(SELECT item FROM item_attributes WHERE name='XY' AND value='-1');
Wichtig: In der Datenbank werden die Hex-Werte mit Großbuchstaben geschrieben und müssen auch exakt so angegeben werden.
Ungetestet. Vorher Backup machen.
Unbedingt!
Vielen Dank, das hilft mir sehr weiter. Auch, um andere Szenarien daraus abzuleiten.
Jetzt getestet und für gut befunden.
Und das Tollste ist, dass das rasend (in Worten: rasend) schnell geht. 106-tausend Elemente in 2 Sekunden umgefärbt. Dafür brauchte ich per Massenbearbeitung etliche Stunden.
Kleiner Tipp:
Um solche SQL-Statements zu sammeln, habe ich mir einen Platzhalter (in einem Ordner “mAirList-Einstellungen”) angelegt. Im Kommentarfeld steht dann z.B.
==== Dummies grau (#DFDFDF) färben: ====
UPDATE items
SET color=‘#DFDFDF’
WHERE idx IN
(SELECT item FROM item_attributes WHERE name=‘AT’ AND value=‘-1’);
==== Elementfarbe ändern: ====
UPDATE items
SET color=‘#DFDFDF’
WHERE color=‘#1B64BD’;
So hat man als SQL-Laie immer die benötigten, gesammelten, erprobten Statements zur Hand und kann sie in die SQL-Konsole kopieren.
Schöne Grüße
Martin
Macht technisch ja nochmal einen Unterschied soweit ich das beurteilen kann.
Du änderst die Daten ja DIREKT in deiner Datenbank durch diesen SQL-Befehl. Bei einer Massenbearbeitung in der mAirListDB wird nochmal einiges berücksichtigt (Die anderen Änderungen, Verbindung zwischen mAirList ↔ Datenbank…)
So hab ich es zumindest noch im Hinterkopf…
Kann aber auch Quatsch sein was ich hier jetzt schreibe. Torben weiß es natürlich besser
Obacht beim Kopieren: Die achsoclevere Forensoftware hat wieder mal aus allen Apostrophen Anführungszeichen gemacht. Tip: Beim nächchtenmal bitte als Code formatieren.
Dachte, das eigentlich gemacht zu haben
Bei mir wird es auch korrekt angezeigt:
Bei den Hochkommata sieht man’s, hier zurück in Code formatiert:
SET color=‘#DFDFDF’
Mit drei Accents graves (```
) vorn und hinten kriegst Du eine blockweise Code-Formatierung hin (im Fließtext mit jeweils einem). Hier nochmal mit korrekten Apostrophen:
==== Dummies grau (#DFDFDF) färben: ====
UPDATE items
SET color='#DFDFDF'
WHERE idx IN
(SELECT item FROM item_attributes WHERE name='AT' AND value='-1');
==== Elementfarbe ändern: ====
UPDATE items
SET color='#DFDFDF'
WHERE color='#1B64BD';
Wenn ich ergänzen darf:
Manchmal ist die automatische Einfärbung bestimmter Stellen durch die Forensoftware - wie im obigen Beispiel zu sehen - nicht immer erwünscht.
Der Trick lautet in dem Fall, hinter die drei Accents graves text
zu schreiben:
```text
Daraufhin würde ein entsprechend formatierter Text so aussehen:
==== Dummies grau (#DFDFDF) färben: ====
UPDATE items
SET color='#DFDFDF'
WHERE idx IN
(SELECT item FROM item_attributes WHERE name='AT' AND value='-1');
==== Elementfarbe ändern: ====
UPDATE items
SET color='#DFDFDF'
WHERE color='#1B64BD';
Mit sql
sieht es dann aber so aus:
==== Dummies grau (#DFDFDF) färben: ====
UPDATE items
SET color='#DFDFDF'
WHERE idx IN
(SELECT item FROM item_attributes WHERE name='AT' AND value='-1');
==== Elementfarbe ändern: ====
UPDATE items
SET color='#DFDFDF'
WHERE color='#1B64BD';
Und jetzt schalten wir wieder zurück in die angeschlossenen Funkhäuser.