Php 动态Mysql查询未给出正确的结果
我有这样的mysql查询Php 动态Mysql查询未给出正确的结果,php,mysql,Php,Mysql,我有这样的mysql查询 SET @sql = NULL; SELECT GROUP_CONCAT( 'fvalue AS ',x.name ) INTO @sql from reimbursment x LEFT JOIN reimbursment_limit y ON y.acc_code = x.acc_code; SET @sql = CONCAT('SELECT b.firstname, ', @sql, ' from user b left join rei
SET @sql = NULL;
SELECT
GROUP_CONCAT(
'fvalue AS ',x.name
) INTO @sql
from reimbursment x
LEFT JOIN reimbursment_limit y
ON y.acc_code = x.acc_code;
SET @sql = CONCAT('SELECT b.firstname, ', @sql, ' from user b
left join reimbursment_limit c
on b.id = c.user_id
left join reimbursment d
on c.acc_code = d.acc_code
group by b.id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
firstname Dentis Allowance
AAAAA 500000 500000
BBBBB null null
像这样的桌子
使用者
偿还
id acc_code name
1 22002 Dentis
2 22004 Allowance
偿还限额
id user_id acc_code fvalue
1 1 22002 500000
2 1 22004 700000
结果呢,像这样
SET @sql = NULL;
SELECT
GROUP_CONCAT(
'fvalue AS ',x.name
) INTO @sql
from reimbursment x
LEFT JOIN reimbursment_limit y
ON y.acc_code = x.acc_code;
SET @sql = CONCAT('SELECT b.firstname, ', @sql, ' from user b
left join reimbursment_limit c
on b.id = c.user_id
left join reimbursment d
on c.acc_code = d.acc_code
group by b.id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
firstname Dentis Allowance
AAAAA 500000 500000
BBBBB null null
正确的结果,必须
firstname Dentis Allowance
AAAAA 500000 700000
BBBBB null null
这个查询正在运行,但没有给出正确的结果,其中用户AAAAA的余量必须为700000,如何修复结果?我尝试了任何方法,但仍然没有给出正确的结果
谢谢问题在于“加入”组的方式
SET @sql = CONCAT('SELECT b.firstname, ', @sql, ' from user b
left join reimbursement c -- swapped join clause
on b.id = c.user_id
left join reimbursment_limit d
on c.acc_code = d.acc_code'); -- removed group by
我认为正确的关系是:在b.nip=c.user上_id@devpro:谢谢,对不起,我错了创建问题,我一直在编辑我的问题,我无法打开你的sqlfiddle,不左边的连接是对的,我只是错误地给出记录,我已经修复了右边在b.id=c.user\u id报销限额中的user\u id都是1。这意味着这两个记录都与用户AAAAA绑定是的,正确的用户AAAAA必须获得500000和700000否,请在我的问题中查看我完整的正确结果您要查找的是数据透视表。请看