我在 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。
最佳答案
关于php - 从 PHP(使用 mysqli)为 MySQL 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12704205/