Removed useless joins

This commit is contained in:
emeric
2026-06-18 00:17:16 +02:00
parent cf6ad12a44
commit 5ecdc58b97
+12 -12
View File
@@ -768,8 +768,7 @@ namespace lms::db
std::ostringstream oss; std::ostringstream oss;
oss << "SELECT a from artist a" oss << "SELECT a from artist a"
" INNER JOIN track_artist_link t_a_l ON a.id = t_a_l.artist_id" " INNER JOIN track_artist_link t_a_l ON a.id = t_a_l.artist_id";
" INNER JOIN track t ON t.id = t_a_l.track_id";
if (!linkTypes.empty()) if (!linkTypes.empty())
{ {
@@ -780,6 +779,7 @@ namespace lms::db
{ {
if (!first) if (!first)
oss << ", "; oss << ", ";
oss << "?"; oss << "?";
first = false; first = false;
} }
@@ -790,7 +790,7 @@ namespace lms::db
for (TrackArtistLinkType type : linkTypes) for (TrackArtistLinkType type : linkTypes)
query.bind(type); query.bind(type);
query.where("t.id = ?").bind(getId()); query.where("t_a_l.track_id = ?").bind(getId());
query.groupBy("t_a_l.artist_id"); query.groupBy("t_a_l.artist_id");
query.orderBy("t_a_l.id"); query.orderBy("t_a_l.id");
@@ -802,30 +802,30 @@ namespace lms::db
assert(self()); assert(self());
assert(session()); assert(session());
std::ostringstream oss; auto query{ session()->query<ArtistId>("SELECT t_a_l.artist_id FROM track_artist_link t_a_l") };
oss << "SELECT t_a_l.artist_id FROM track_artist_link t_a_l"
" INNER JOIN track t ON t.id = t_a_l.track_id";
if (!linkTypes.empty()) if (!linkTypes.empty())
{ {
oss << " AND t_a_l.type IN ("; std::ostringstream oss;
oss << "t_a_l.type IN (";
bool first{ true }; bool first{ true };
for ([[maybe_unused]] TrackArtistLinkType type : linkTypes) for ([[maybe_unused]] TrackArtistLinkType type : linkTypes)
{ {
if (!first) if (!first)
oss << ", "; oss << ", ";
oss << "?"; oss << "?";
first = false; first = false;
} }
oss << ")"; oss << ")";
query.where(oss.str());
for (TrackArtistLinkType type : linkTypes)
query.bind(type);
} }
auto query{ session()->query<ArtistId>(oss.str()) }; query.where("t_a_l.track_id = ?").bind(getId());
for (TrackArtistLinkType type : linkTypes)
query.bind(type);
query.where("t.id = ?").bind(getId());
query.groupBy("t_a_l.artist_id"); query.groupBy("t_a_l.artist_id");
query.orderBy("t_a_l.id"); query.orderBy("t_a_l.id");