Php 获取联接查询中的行数

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 一个项目具有多个顺序,如表结构所

我正在不同的表中保存项目和订单。我想按项目计算订单。 这是我的桌子结构

表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 
一个项目具有多个顺序,如表结构所示。现在我想把订单数作为每一项

我尝试过使用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:)