Мой запрос получает результаты этих продуктов на основе того, существуют ли они в отдельном индексе таблицы. Я пытаюсь получить счет всех экземпляров, где они существуют, поэтому я могу ЗАКАЗАТЬ результаты по релевантности. Все, что я пытаюсь, похоже, возвращает переменную @priority как 0. Любые идеи?Подсчитайте количество раз, когда индекс существует с использованием запроса, содержащего несколько операторов EXIST()
Возможно, лучше использовать заявления о соединении?
Благодарим за помощь. Вот мой MySQL запросов:
SELECT `products` . * , @priority
FROM `products`
LEFT JOIN productstypes_index ON productstypes_index.product_id = products.id
WHERE (
EXISTS (
SELECT *
FROM `productstypes_index`
WHERE `productstypes_index`.`product_id` = `products`.`id`
AND `productstypes_index`.`_type_id` = '1'
)
AND (
(
(
EXISTS (
SELECT @priority := COUNT(*)
FROM `producthashtags_index`
WHERE `producthashtags_index`.`product_id` = `products`.`id`
AND `producthashtags_index`.`producthashtag_id` = '43'
)
)
AND (
EXISTS (
SELECT @priority := COUNT(*)
FROM `producthashtags_index`
WHERE `producthashtags_index`.`product_id` = `products`.`id`
AND `producthashtags_index`.`producthashtag_id` = '11'
)
)
)
)
)
ORDER BY `updated_at` DESC;
MySQL игнорирует список SELECT в подзапросе EXISTS, поэтому не имеет значения, что вы набираете там. –