Отображать самые продаваемые товары и связанные изображения из другой таблицы

57
3

Я хотел бы отобразить изображение 4 самых продаваемых товаров на индексной странице, но sql, который я использую, не работает. Я думаю, что синтаксис верен, но ничего не показывает на странице. У меня есть таблица таблицы и продуктов order_items.

Таблица продуктов

  CREATE TABLE IF NOT EXISTS 'products' (
'id' int(11) NOT NULL,
'date' datetime NOT NULL,
'category' int(11) NOT NULL,
'name' varchar(100) NOT NULL,
'image' varchar(100) CHARACTER SET utf8 NOT NULL,
'description' text NOT NULL,
'author' varchar(100) NOT NULL,
'price' decimal(5,2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

Таблица Order_items

  CREATE TABLE IF NOT EXISTS 'order_items' (
'id' int(11) NOT NULL,
'order' int(11) NOT NULL,
'product' int(11) NOT NULL,
'price' decimal(8,2) NOT NULL,
'qty' int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68 ;

ПРИМЕЧАНИЕ. В таблице order_items полевой продукт соответствует идентификатору продукта.

Наконец, это оператор sql, который я использую, но ничего не показываю.

   public function bestSellingItems(){
$sql = "SELECT * FROM products AS p
INNER JOIN order_items AS od ON p.id = od.id
GROUP BY p.id, SELECT SUM(od.qty) AS total
ORDER BY SUM(od.qty) DESC limit 4";
}

Буду признателен за любую помощь.

спросил(а) 2016-04-13T12:42:00+03:00 4 года, 6 месяцев назад
1
Решение
70

Вы сказали это сами, product соответствует id и вы использовали p.id = od.id, также, я не понял часть второго выбора, который, как я полагаю, должен вызывать ошибку (нет...), поэтому я скорректировал это немного - выберите сумму, псевдоним и порядок по этому псевдониму.

   public function bestSellingItems(){
$sql = "SELECT p.*,od.*,sum(od.qty) as sum_qty FROM products AS p
INNER JOIN order_items AS od ON p.id = od.product
GROUP BY p.id
ORDER BY sum_qty DESC limit 4";
}

ответил(а) 2016-04-13T12:46:00+03:00 4 года, 6 месяцев назад
42

ваше соединение "INNER JOIN order_items AS od ON p.id = od.id " должно быть INNER JOIN order_items AS od ON p.id = od.Product

ответил(а) 2016-04-13T12:46:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема