我想在索引页面上显示4个最畅销商品的图像,但我使用的sql不起作用。我认为语法是正确的,但页面上没有显示任何内容。我有一个order_items表和products表。
产品表
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表中,字段产品对应于产品的ID。
最后,这是我正在使用的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";
}
如果有任何帮助,我将不胜感激。
你自己说的,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";
}
您的联接"INNER join order_items AS od ON p.id=od.id"应为INNER join order_items AS od ON p.id=od.Product