我在 MySQL 数据库中有这些表:
CREATE TABLE `product` (
`idProduct` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`category` varchar(255) NOT NULL,
PRIMARY KEY (`idProduct`)
);
CREATE TABLE `sale` (
`idSale` int(10) unsigned NOT NULL AUTO_INCREMENT,
`highDate` date NOT NULL,
`idProduct` int(10) unsigned NOT NULL,
`idUser` varchar(45) NOT NULL,
PRIMARY KEY (`idSale`)
);
我想获得一个表格,其中包含行中的用户和列中的产品,例如这个问题: MySQL Pivot row into dynamic number of columns
在SQL Fiddle (Demo)中工作正常,但我需要帮助才能使用 mysqli 从 PHP 查询它。
这个对吗?
$this->dbh->query("SET @sql = NULL");
$stmt = $this->dbh->query("SELECT GROUP_CONCAT(DISTINCT
CONCAT(
'count(case when category = ''',
category,
''' then 1 end) AS ',
replace(category, ' ', '')
)
) INTO @sql
FROM product;");
$stmt = $this->dbh->prepare("SET @sql = CONCAT('SELECT s.idUser, ', @sql, ' FROM sale s
LEFT JOIN product p ON p.idProduct = s.idProduct
GROUP BY s.idUser');");
$stmt->execute();
如何从查询中检索数据?Execute() 方法返回 TRUE 或 FALSE。