【发布时间】:2013-02-09 19:11:53
【问题描述】:
需要一点帮助来弄清楚这种情况。 我看到 codeigniter 不支持 UNION,我想找出这个方法来获得 2 个表的总和,产品 id 相同。
问题在于 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;
Codeigniter 函数:
$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();
非常感谢任何帮助。
【问题讨论】:
-
你已经问过这个question
-
你好 Wolf,是的,但我在这里询问如何在不使用联合的 codeigniter 中获取正常的 sql,并询问为什么值是 X。没有冒犯。你给我最好的回应。但仍在寻找解决方案。
标签: php sql codeigniter