Pablo wrote:onkel_enno wrote:Code: Select all
Artist by Album Artist\<album artist>\<artist>
Doesn't show nodes where album artist <> song artist
f.e. Various
You're right, <album artist> and <artist> can't be combined. This issue is mentioned somewhere in the online help. The problem is that <album artist> links
albums.idArtist = Artists.id and <artist> links
songs.idArtist = Artists.id, so you end up with
albums.idArtist = songs.idArtist, producing the behavior you described.
If you have any ideas of how to overcome this problem let me know

. I wasn't able to find a solution that doesn't imply rewriting a big part of the script

.
I have actually solved this problem!
The problem is that <album artist> and <artist> uses the same Artists table.
The solution is to add an extra Artists table to the SQL by giving it an alias. I called it Artists1.
Then you need to change the script like this:
Find.
Code: Select all
.Add "ALBUM ARTIST", "Artists.Artist"
And replace with
Code: Select all
.Add "ALBUM ARTIST", "Artists1.Artist"
Find
Code: Select all
.Add "ALBUM AND ARTIST", "Albums.Album & ' (' & Artists.Artist & ')'"
And replace with
Code: Select all
.Add "ALBUM AND ARTIST", "Albums.Album & ' (' & Artists1.Artist & ')'"
Find
Code: Select all
.Add "ALBUM ARTIST", " Artists.Id = Albums.IdArtist And Albums.ID = Songs.IdAlbum "
And replace with
Code: Select all
.Add "ALBUM ARTIST", " Artists1.Id = Albums.IdArtist And Albums.ID = Songs.IdAlbum "
Find
Code: Select all
.Add "ALBUM AND ARTIST", " Artists.Id = Albums.IdArtist And Albums.ID = Songs.IdAlbum "
And replace with
Code: Select all
.Add "ALBUM AND ARTIST", " Artists1.Id = Albums.IdArtist And Albums.ID = Songs.IdAlbum "
And now we come to the tricky part. How do we add an extra Artists table with the name Artists1?
I tried to change this
Code: Select all
tables = Array("Artists", "Albums", "Genres", "Memos", "AddSongInfo", "AddSongInfoInt", "Played", "PlayLists", "PlayListSongs", "Lists", "Medias", "Covers")
Into this (thats how you do it in SQL).
Code: Select all
tables = Array("Artists", "Artists as Artists1", "Albums", "Genres", "Memos", "AddSongInfo", "AddSongInfoInt", "Played", "PlayLists", "PlayListSongs", "Lists", "Medias", "Covers")
But it didnt work. It seems that you cant have any spaces in the Array? (Or is it possible?)
Anyway, I did a dirty trick.
The replaced the last code with this:
Code: Select all
tables = Array("Artists", "Artists1", "Albums", "Genres", "Memos", "AddSongInfo", "AddSongInfoInt", "Played", "PlayLists", "PlayListSongs", "Lists", "Medias", "Covers")
And then I opened up MediaMonkey.mdb in Access and created a query on table Artists and called it Artists1.
And there you go, it works!
I havent tested it so much though. And the drag&drop functionality is not modified so it will most certainly mess up the tags/library.
Warning!
If you plan to test this you better have knowledge of Access. If you dont know what you are doing you can screw up your library.
Do a backup if you plan to test it!
PS If anyone knows how to define "Artists as Artists1" as a table in the script then tell us. So we dont need the workaround with a query in Access.