gpt4 book ai didi

php - 在 codeigniter 上从 SQL 中汇总 1 个以上的表

转载 作者:行者123 更新时间:2023-12-04 05:12:05 24 4
gpt4 key购买 nike

需要一点帮助才能弄清楚这种情况。
我看到 codeigniter 不支持 UNION,我想找出这种方法来获得具有相同产品 ID 的 2 个表的总和。

问题是在 sum 2 表上,值是重复的或相乘的。

链接到 SQL Fiddle

结构 :

create table products
(id int, name varchar(9));
insert into products
(id, name)
values
(1,'Product 1'),
(2,'Product 2'),
(3,'Product 3');


create table p_items
(puid int, prid int, quantity int);
insert into p_items
(puid, prid, quantity)
values
(11,1,100),
(11,2,100),
(11,2,100),
(14,2,100),
(14,3,100),
(15,3,100);

create table s_items
(puid int, prid int, quantity int);
insert into s_items
(puid, prid, quantity)
values
(11,1,1),
(11,2,1),
(11,2,1),
(13,2,1),
(15,3,1),
(13,3,1);

在普通 SQL 中执行:
select a.puid, b.name, a.prid, sum(a.quantity) as P_ITEMS, sum(c.quantity) as S_ITEMS
from p_items a
join products b
on b.id = a.prid
join s_items c
on c.prid = a.prid
group by a.prid;

代码点火器功能:
$this->alerts
->select('products.id as productid, products.name, sumt(p_items.quantity), sum(s_items.quantity)', FALSE)
->from('products')
->join('p_items', 'products.id = p_items.prid', 'left')
->join('s_items', 'products.id = s_items.prid')
->group_by("products.id");
echo $this->alerts->generate();

非常感谢任何帮助。

最佳答案

您的问题是您生成笛卡尔积,从而得到重复的总和。例如,查看产品 ID 3。您将其与 p_items prid = 3 相关联。就其本身而言,这将返回 200。但是,一旦您加入 s_items prid = 3,现在对于 s_items 中的每一行,它必须与 p_items 中的每一行匹配。含义:

14 3 100 15 3 1
14 3 100 15 3 1
15 3 100 15 3 1
15 3 100 15 3 1
---------------
400 4

除了产品表,哪个表是你的主表?如果您使用 p_items,您希望从 s_items 中获取第 13 行。同样,如果您使用 s_items,您将不会从 p_items 获得第 14 行。

您可以使用子查询完成此操作:
select b.id, 
b.name,
P_ITEMS,
S_ITEMS
from products b
left join
(SELECT prid, SUM(quantity) as P_Items
FROM p_items
GROUP BY prid)
a on b.id = a.prid
left join
(SELECT prid, SUM(quantity) as S_Items
FROM s_items
GROUP BY prid)
c on c.prid = a.prid
group by b.id, b.name

以及更新的 Fiddel: http://sqlfiddle.com/#!2/62b45/12

祝你好运。

关于php - 在 codeigniter 上从 SQL 中汇总 1 个以上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com