Artist in Attribut? SQLite Command Line

Servus :slight_smile:

ich bin gerade verzweifelt an der Suche nach einer Lösung den Artist/Interpret jeden Songs in ein von mir angelegten Attribut, nennen wir es AttributX, zu kopieren.

Das ganze wäre super einfach, wären die Song Arrtibuten in der gleichen Tabelle wo der rest gespeichert wird - ist es aber leider nicht.

03.12_Jn6rAelPpb

Die Infos wie Title, Artist und alles weitere finden sich in Tabelle “items”. Daraus möchte ich nun den Artist in Tabelle “item_attributes” und Column AttributX kopieren. Hierzu folgender ansatz…

UPDATE item_attributes set AttributX=(select ARTIST from items);

…der natürlich nicht funktioniert.

Wär’ ja auch zu schön gewesen.

über helfende Kommentare wär’ ich sehr dankbar :slight_smile:

LG
Joshua

Jup, das ist in der Tat nicht so einfach.
Aber was spricht dagegen, daß du Mairlist die Arbeit machen lässt?
Wenn du das Attribut in Mairlist angelegt hast, kannst du dieses doch über die Massenbearbeitung füllen?

…dass vermutlich nicht jeder Song vom selben Interpreten ist. Joshua möchte offensichtlich immer das Interpreten-Feld in das Attribut kopieren. :wink:

1 Like

Genau, das möchte ich machen :slight_smile:

1 Like

Puuuhh,
Ich glaube da kommst du ohne externe Programmierung nicht weiter.

So geht es:

--- Alte Attributwerte löschen
DELETE FROM items_attributes WHERE name='AttributX';

-- Interpret in Attribut kopieren
INSERT INTO item_attributes (item, name, value)
SELECT idx, 'AttributX', artist FROM items;

Der DELETE-Befehl ist notwendig, da der zweite Befehl sonst fehlschlägt in dem Fall, wo das Attribut bei einigen Elementen bereits gesetzt ist (wiederholte Ausführung).

2 Likes

Nice! Hat in der CMD schonmal funktioniert :slight_smile:

Wie würde das in BATCH aussehen? Im Bezug auf die Windows Aufgabenplanung.

#!/bin/bash --
sqlite3 plusradio.mldb "DELETE FROM items_attributes WHERE name='MM-Artist';" 
echo "INSERT INTO item_attributes (item, name, value)"
echo "SELECT idx, 'MM-Artist', artist FROM items;"

So vielleicht? (MM-Artist = AttributX)

Hat im Versuch bei mir nicht funktioniert :confused:

1 Like

Einfach beide Statements hintereinander, mit Semikolon getrennt:

sqlite3 plusradio.mldb "DELETE FROM items_attributes WHERE name='MM-Artist'; INSERT INTO item_attributes (item, name, value) SELECT idx, 'MM-Artist', artist FROM items;"

Hab’s nicht ausprobiert, aber so sollte es klappen.

Vielen Dank, hat funktioniert! :slight_smile:

2 Likes