Hallo,
ich schreibe momentan an einer Verwaltungssoftware für Audio-Dateien auf Datenbankbasis. An der Datenbank an sich kann ich nichts ändern.
Die Struktur sieht u.a. folgendermaßen aus:
eine Tabelle für die Audio-Dateien [audio_files]
eine Tabelle für die Interpreten [artists] und
eine Tabelle, die die Tabellen [audio_files] und [artists] per id verbindet [relation] (id, audioFileID, artistID).
So ist es möglich, dass einer Audio-Datei mehrere Interpreten zugewiesen werden können und andersherum ein Interpret mehreren Audio-Dateien angehören kann.
Ich versuche nun allerdings schon seit geraumer Zeit eine SQL-Abfrage zu erstellen, ähnlich dieser: "Gebe mir alle!!! Einträge aus [audio_files] und verknüpfe sie anhand der Tabelle [relations] mit den entsprechenden Interpreten aus [artists]"
SELECT audio_files.title, artists.name FROM audio_files INNER JOIN relation, artists WHERE relation.audioFileID = audio_files.id AND relation.artistID = artists.id;
Probleme dabei sind:
1. Die Einträge sind so oft vorhanden, wie Interpreten zugeordnet sind.
Gibt es eine Möglichkeit die Interpreten z.B. Trennzeichen getrennt in eine einzelne Zelle zu schreiben?
title = "blabla" | artist = "artist1,artist2"
2. Wenn einem Eintrag keine Interpreten zugeordnet sind (kein Eintrag in [relation]), wird dieser auch nicht zurückgegeben.
Also Lösung ist mir der Gedanke gekommen, eine verschachtelte Abfrage zu nehmen "Gebe mir alle Einträge aus [audio_files] zurück" und für jeden Eintrag dann "Gebe mir alle Interpreten mit der relation.audioFileID = ... zurück". Die Lösung ist aber so zeitintensiv, dass ich bei 10000 Dummydaten ruhig mal eine Tasse Kaffee trinken kann.
Hat jemand einen Lösungsvorschlag?
ich schreibe momentan an einer Verwaltungssoftware für Audio-Dateien auf Datenbankbasis. An der Datenbank an sich kann ich nichts ändern.
Die Struktur sieht u.a. folgendermaßen aus:
eine Tabelle für die Audio-Dateien [audio_files]
eine Tabelle für die Interpreten [artists] und
eine Tabelle, die die Tabellen [audio_files] und [artists] per id verbindet [relation] (id, audioFileID, artistID).
So ist es möglich, dass einer Audio-Datei mehrere Interpreten zugewiesen werden können und andersherum ein Interpret mehreren Audio-Dateien angehören kann.
Ich versuche nun allerdings schon seit geraumer Zeit eine SQL-Abfrage zu erstellen, ähnlich dieser: "Gebe mir alle!!! Einträge aus [audio_files] und verknüpfe sie anhand der Tabelle [relations] mit den entsprechenden Interpreten aus [artists]"
SELECT audio_files.title, artists.name FROM audio_files INNER JOIN relation, artists WHERE relation.audioFileID = audio_files.id AND relation.artistID = artists.id;
Probleme dabei sind:
1. Die Einträge sind so oft vorhanden, wie Interpreten zugeordnet sind.
Gibt es eine Möglichkeit die Interpreten z.B. Trennzeichen getrennt in eine einzelne Zelle zu schreiben?
title = "blabla" | artist = "artist1,artist2"
2. Wenn einem Eintrag keine Interpreten zugeordnet sind (kein Eintrag in [relation]), wird dieser auch nicht zurückgegeben.
Also Lösung ist mir der Gedanke gekommen, eine verschachtelte Abfrage zu nehmen "Gebe mir alle Einträge aus [audio_files] zurück" und für jeden Eintrag dann "Gebe mir alle Interpreten mit der relation.audioFileID = ... zurück". Die Lösung ist aber so zeitintensiv, dass ich bei 10000 Dummydaten ruhig mal eine Tasse Kaffee trinken kann.
Hat jemand einen Lösungsvorschlag?