- my $main_sql_start=("SELECT artists.name\n" .
- "\tFROM (SELECT files_id FROM tags\n" .
- "\t\tINNER JOIN files_x_tags ON tags.id=files_x_tags.tags_id\n" .
- "\t\tWHERE tags.id in\n\t\t\t(");
- my $main_sql_end=(")\n\t\t) AS subselect\n" .
- "\tINNER JOIN files ON subselect.files_id=files.id\n" .
- "\tINNER JOIN artists ON files.artists_id=artists.id\n" .
- "\n\tGROUP BY artists.name;");
- while(my $constraint=shift @constraints)
- {
- my $cid=$constraint->{id};
- push(@ids, $cid);
- }
- @ids = map( { "\"$_\""; } grep { defined; } @ids) unless($self->{postgres});
- my $tagstr=join(", ", @ids);
- my $sql = ($main_sql_start . $tagstr .
- $main_sql_end);
+ my $sql=("SELECT artists.name FROM (\n" .
+ $self->tags_subselect(@constraints) .
+ ") AS subselect\n" .
+ "INNER JOIN files ON subselect.files_id=files.id\n" .
+ "INNER JOIN artists ON files.artists_id=artists.id\n" .
+ "GROUP BY artists.name;");