У меня есть таблица order_detail с этим INFORMATIONSПолучить наиболее продаваемые продукты с указанными один
id_order id_product
1 2
1 3
2 2
2 4
2 5
2 3
3 2
3 1
4 2
4 3
4 1
4 6
Я хотел бы получить наиболее продаваемые продукты (первые 5 элементов) с текущим продуктом, скажем, продукт ИН 2
Я попытался это, но он возвращает один неверный результат
SELECT od2.product_id, count(od2.`product_id`) FROM `ps_order_detail` od1
LEFT JOIN ps_order_detail od2 ON od1.id_order = od2.id_order where
od2.product_id != od1.product_id AND od1.product_id=2
результат должен быть
product_id count(od2.`product_id`)
3 3
4 2
1 1
5 1
6 1
Thnks очень много очень быстро, но почему я получаю идентификатор продукта 2 в результате? –
@tarekfellah. , , Я изначально написал запрос как внутреннее соединение и имел «od2.id_product <> od.id_product'. С внутренним соединением это будет фильтр. Однако «левое соединение» делает что-то еще (установка столбцов в «NULL» вместо фильтрации). Я исправил ответ. –
Почему вы заказываете по счету (*), он возвращает не упорядоченные результаты, я изменился с порядком по счету (od2.id_order), и кажется, что он работает –