Php 获取联接查询中的行数
我正在不同的表中保存项目和订单。我想按项目计算订单。 这是我的桌子结构 表1:订单表Php 获取联接查询中的行数,php,mysql,rowcount,Php,Mysql,Rowcount,我正在不同的表中保存项目和订单。我想按项目计算订单。 这是我的桌子结构 表1:订单表 id | table2_id 1 | 1 2 | 1 3 | 2 4 | 2 id | user_id 1 | 1 2 | 2 3 | 1 4 | 2 表2:项目表 id | table2_id 1 | 1 2 | 1 3 | 2 4 | 2 id | user_id 1 | 1 2 | 2 3 | 1 4 | 2 一个项目具有多个顺序,如表结构所
id | table2_id
1 | 1
2 | 1
3 | 2
4 | 2
id | user_id
1 | 1
2 | 2
3 | 1
4 | 2
表2:项目表
id | table2_id
1 | 1
2 | 1
3 | 2
4 | 2
id | user_id
1 | 1
2 | 2
3 | 1
4 | 2
一个项目具有多个顺序,如表结构所示。现在我想把订单数作为每一项
我尝试过使用join,但它提供了所有行cont:4
SELECT count(Table1.id) as order_count_for_each_item
FROM `Table2` as `t2`
LEFT OUTER JOIN `Table1` as `t2` ON `t1`.`id` = `t2`.`table2_id`;
但是我要每个项目都计数:至于项目1是:2,项目2是:2
结论是:
正如拉胡尔所建议的:
SELECT count(*) as order_count_for_each_item
FROM `Table2` as t2
LEFT OUTER JOIN `Table1` as t1 ON `t1`.`table2_id` = `t2`.id
GROUP BY t1.`table2_id`
这个查询给出了我最初想要的结果
order_count_for_each_item
1 |
2 |
<>但是我接受的答案(Bibhudatta Sahoo)给我的项目计数是零,也是项目PAR顺序的计数。
SELECT t2.`id`,
(SELECT count(t1.id) form `Table1` as t1
where t2.`id` = t1.`table2_id`) as order_count_for_each_item
FROM `Table2` as t2
group by t2.`id`
order by t2.`id` asc
Item ID | order_count_for_each_item
1 | 2
2 | 2
3 | 0
4 | 0
所以我接受了这个答案。这里缺少一个
组
SELECT count(*) as order_count_for_each_item
FROM `Table2` as t2
LEFT OUTER JOIN `Table1` as t1 ON `t1`.`table2_id` = `t2`.id
GROUP BY t1.`table2_id`
像这样试试
SELECT t2.`id`,
(SELECT count(t1.id) form `Table1` as t1
where t2.`id` = t1.`table2_id`) as order_count_for_each_item
FROM `Table2` as t2
group by t2.`id`
order by t2.`id` asc
您必须使用聚合
函数分组依据
<代码>将数据分组
并获取计数
SELECT item.id,ifnull(count(order.id),0) as order_count_for_each_item
FROM `Table2` as `item`
LEFT JOIN `Table1` as `order` ON order.table2_id=item.id
group by item.id ;
使用
分组
并进行计数
谢谢你的回答,我会尝试一下,然后再给你回复。谢谢@Rahul你怎么知道哪个是哪个?@Rahul必须投影group by子句中的列。是吗?@Sidtharthan,不,这不是一项任务,但如果是计划的,那么它应该包括在小组中by@Strawberry,不知道你的意思是什么?我会尝试一下,然后返回给你@BibhudattaSahoo@BibhudattaSahoo谢谢@BibhudattaSahoo,只有一个问题是,这可能与join查询有关。还是不?欢迎您,这是可能的,但您将无法获得所需的o/p:)