Вы не передаете предложение where, как в старом android SQLite, вместо этого вы передаете параметры, которые будут использоваться в предложении where.
В Room вы пишете весь запрос, включая предложение where с именованными параметрами, такими какв PHP DBO или Java JDBC, затем передайте параметры при вызове метода.
@Query("SELECT * FROM user WHERE username LIKE :username LIMIT 1")
LiveData<User> findByUserName(String username);
Так что для вашего случая правильный метод будет:
@Query("SELECT products_table.id,products_table.name as productName,products_table.image,variations_table.name as variation,variations_table.id as variation_id,variations_table.default_sell_price as selling_price from products_table INNER JOIN variations_table ON products_table.id = variations_table.product_id LEFT JOIN variations_locations_details_table as VLD ON variations_table.id = VLD.variation_id WHERE products_table.id = :productId")
LiveData<List<VariedProducts>> getProductsWithVariations(Integer productId);