diff --git a/src/collection/sqlcollection/ScanResultProcessor.cpp b/src/collection/sqlcollection/ScanResultProcessor.cpp index 0056c42..c36009f 100644 --- a/src/collection/sqlcollection/ScanResultProcessor.cpp +++ b/src/collection/sqlcollection/ScanResultProcessor.cpp @@ -389,7 +389,8 @@ ScanResultProcessor::addTrack( const QVariantMap &trackData, int albumArtistId ) if( !m_artists.contains( trackData.value( Field::ARTIST ).toString() ) || !m_genre.contains( trackData.value( Field::GENRE ).toString() ) || !m_composer.contains( trackData.value( Field::COMPOSER ).toString() ) || - !m_year.contains( trackData.value( Field::YEAR ).toString() ) ) + !m_year.contains( trackData.value( Field::YEAR ).toString() ) || + !compilationId ) needToQuery = true; if( needToQuery ) @@ -590,10 +591,17 @@ ScanResultProcessor::databaseIdFetch( const QString &artist, const QString &genr query += QString( "SELECT id, CONCAT('ALBUMNAME_', name) AS name FROM albums_temp WHERE artist = %1 AND name = '%2' " ) .arg( QString::number( albumArtistId ), m_collection->escape( album ) ); */ - query += QString( "SELECT id, CONCAT('ARTISTNAME_', name) AS name FROM artists_temp WHERE name = '%1' " ).arg( m_collection->escape( artist ) ); - query += QString( "UNION ALL SELECT id, CONCAT('GENRENAME_', name) AS name FROM genres_temp WHERE name = '%1' " ).arg( m_collection->escape( genre ) ); - query += QString( "UNION ALL SELECT id, CONCAT('COMPOSERNAME_', name) AS name FROM composers_temp WHERE name = '%1' " ).arg( m_collection->escape( composer ) ); - query += QString( "UNION ALL SELECT id, CONCAT('YEARSNAME_', name) AS name FROM years_temp WHERE name = '%1';" ).arg( m_collection->escape( year ) ); + if( !m_artists.contains( artist ) ) + query += QString( "UNION ALL SELECT id, CONCAT('ARTISTNAME_', name) AS name FROM artists_temp WHERE name = '%1' " ).arg( m_collection->escape( artist ) ); + if( !m_genres.contains( genre ) ) + query += QString( "UNION ALL SELECT id, CONCAT('GENRENAME_', name) AS name FROM genres_temp WHERE name = '%1' " ).arg( m_collection->escape( genre ) ); + if( !m_composers.contains( composer ) ) + query += QString( "UNION ALL SELECT id, CONCAT('COMPOSERNAME_', name) AS name FROM composers_temp WHERE name = '%1' " ).arg( m_collection->escape( composer ) ); + if( !m_years.contains( year ) ) + query += QString( "UNION ALL SELECT id, CONCAT('YEARSNAME_', name) AS name FROM years_temp WHERE name = '%1';" ).arg( m_collection->escape( year ) ); + if( query.startsWith( "UNION ALL " ) ) + query.remove( 0, 10 ); + QStringList res = m_collection->query( query ); int index = 0; QString first;