Suche erstes Datum und erstelle Eintrag
In der Tabelle SONGS listen wir alle Lieder unserer Datenbank. Diese können auf verschiedenen Tonträgern erscheinen welche in der Tabelle PRODUKTE angelegt werden und die Songs über eine n:m Verknüpfung der Tabelle TRACKS (= Songliste eines PRODUKTEs die über SONGs befüllt wird) verknüpft werden. Die PRODUKTE haben jeweils unterschiedliche 'Release' Daten.
Nun möchte ich über einen Trigger allen Songs das jeweils erste 'Release' Datum in der Tabelle PRODUKTE suchen und den kleinsten gefundenen Wert in das Feld 'Erster Release' in der Tabelle SONGS eintragen.
Danke für jede Hilfe!
8 Antworten
-
Wie identifizierst du einen Song, sprich: wann sind zwei Songs identisch? Und in welcher Tabelle ist das Datum hinterlegt? Bei PRODUKTE?
-
Du solltest dir überlegen, ob das Datum in SONG nicht eher ein Funktionsfeld sein sollte statt ein Datumsfeld. Das Funktionsfeld ist dann automatisch immer richtig, ein Datumsfeld würde ich in irgendeiner Form gegen Veränderung sichern. Falls du ein Datumsfeld nutzt, würde ich das über einen Trigger in der Tabelle TRACKS steuern. Dort werden ja jedem neuen Produkt (Datenträger) die enthaltenen Songs zugeordnet bzw. ein neuer Song erhält den dazugehörigen Datenträger.
Nicht klar für mich ist nach wie vor, wie ein Song identifiziert ist. Also z.B. der Song "Kiss" als Studioversion von Prince ist ja auf ganz verschiedenen CDs: Parade, Greatest Hits, etc. Als Life Song (dann wohl ein anderer Song bei dir) wiederum auf versch. Datenträgern/Quellen. Manchmal ist das gleiche Lied in versch. Versionen auf dem gleichen Datenträger. Wie unterscheidest du das? Ich gehe jetzt davon aus, dass ein Song bei dir in irgendeiner Weise eine Art ID hat (nicht zu verwechseln mit der fortlaufenden Nummer-ID in der Datenbank). In einem Formularfeld in der Tabelle SONGS könnte dann stehen (ohne es ausprobiert zu haben):
let me:= SongID; first((select TRACKS) [SongID=me] order by Produkte.Datum).Datum
Dabei ist SongID ein Feld mit der irgendwie gearteten Identitätsauszeichnung eines Liedes (das es ja auf mehreren Produkten gibt) und Produkte die Feldbezeichnung der Tabelle PRODUKTE in der n:m Tabelle TRACKS. Falls du kein Feld mit SongID hast, musst du die Identität durch bestimmte Kennzeichen im Fomularfeld herstellen (z.B. Länge, Titel, Interpret, Produzent, ...)
Willst du über einen Trigger arbeiten, dann diesen in der Tabelle TRACKS bei "Trigger nach Änderung"
let me:= this; let meSong := me.Songs.SongID; let myDatum := first((select TRACKS) [SongID=me] order by Produkte.Datum).Datum; me.Songs.Datum := myDatum
Dabei ist "Songs" die Feldbezeichnung der Tabelle SONGS in der Beziehungstabelle TRACKS.
Content aside
- vor 1 JahrZuletzt aktiv
- 8Antworten
- 68Ansichten
-
3
Folge bereits