DB-Suche nach Elementfarbe

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” :slight_smile:

Schöne Grüße
Martin

Wie kommen/kamen denn diese Elemente zu ihrer Farbe?

1 Like

Durch “Massenbearbeitung” in der mAirList-DB.

1 Like

… also keine automatische Zuweisung infolge des Elementtyps. Korrekt?

Korrekt! Genau so ist es.

Kleiner Funfact: Die Frage habe ich mir heute selbst gestellt…

1 Like

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.

3 Likes

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.

4 Likes

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

2 Likes

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 :slight_smile:

Obacht beim Kopieren: Die achsoclevere Forensoftware hat wieder mal aus allen Apostrophen Anführungszeichen gemacht. Tip: Beim nächchtenmal bitte als Code formatieren.

1 Like

Dachte, das eigentlich gemacht zu haben :face_with_hand_over_mouth:
Bei mir wird es auch korrekt angezeigt:
Unbenannt

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';

3 Likes

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';

:wink:

3 Likes

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';

:stuck_out_tongue_winking_eye:

Und jetzt schalten wir wieder zurück in die angeschlossenen Funkhäuser.

2 Likes