Php 基于表中的不同值使用列进行查询
我有一张桌子,里面有三根柱子。位置标识、产品标识和数量:Php 基于表中的不同值使用列进行查询,php,mysql,sql,dynamic,Php,Mysql,Sql,Dynamic,我有一张桌子,里面有三根柱子。位置标识、产品标识和数量: LOCATION_ID | PRODUCT_ID | QTY -------------------------------- 1 1 1 2 1 3 1 3 5 2 3 2 2
LOCATION_ID | PRODUCT_ID | QTY
--------------------------------
1 1 1
2 1 3
1 3 5
2 3 2
2 4 2
1 4 5
每次产品进出某个位置时,都会在此表中创建或更新一行
是否可以根据表中的位置ID添加列
我希望结果是这样的:
PRODUCT_ID | 1 | 2 |
--------------------
1 1 3
3 5 2
4 5 2
如果以后添加了更多的LOCATION\u ID,则查询中将有一个名为LOCATION ID(3)的新列。对此,您必须使用动态SQL
SET@sql=NULL;
选择组_CONCAT(不同
CONCAT('SUM(位置id='时的情况),位置id,
'然后数量结束)`',位置`标识'`'))
进入@sql
来自表1;
设置@sql=CONCAT('SELECT product_id',@sql,'
来自表1
按产品分组_id');
从@sql准备stmt;
执行stmt;
解除分配准备stmt;
输出:
| PRODUCT_ID | 1 | 2 |
|------------|---|---|
| 1 | 1 | 3 |
| 3 | 5 | 2 |
| 4 | 5 | 2 |
并使用它
CALL products_by_location();
下面是演示的工作原理,就像我创建和调用存储过程时一样,完全符合我的要求!但是,当我试图在phpMyAdmin中直接运行动态sql时,我得到了以下错误:#1243-指定要执行的未知准备语句处理程序(stmt)。有什么想法吗?通过删除BEGIN、取消分配PREPARE stmt使其正常工作;结束