Php 如何计算组中的一行,但一次只能计算一个数字
我试图统计购买品牌1、品牌2或品牌3的商店数量。但pne商店只算一次。但在我的查询中,它计算每个品牌的总行数。有人能纠正我的疑问吗Php 如何计算组中的一行,但一次只能计算一个数字,php,mysql,count,Php,Mysql,Count,我试图统计购买品牌1、品牌2或品牌3的商店数量。但pne商店只算一次。但在我的查询中,它计算每个品牌的总行数。有人能纠正我的疑问吗 --- product --- id pcode pname brand 1 123 Dalda 1 2 124 Habib 1
--- product ---
id pcode pname brand
1 123 Dalda 1
2 124 Habib 1
3 125 Sufi 2
4 126 Toyota 3
---------SALE-----------
id shcode shname pcode pname amount
1 1 A G/S 123 DALDA 1020
2 1 A G/S 124 HABIB 1030
3 2 B G/S 125 SUFI 1040
4 2 B G/S 123 DALDA 1020
5 2 B G/S 126 TOYOTA 1050
6 3 C G/S 123 DALDA 1020
7 4 D G/S 125 SUFI 1040
8 4 D G/S 123 DALDA 1020
9 4 D G/S 124 HABIB 1030
10 4 D G/S 126 TOYOTA 1050
11 5 E G/S 123 DALDA 1020
12 6 F G/S 125 SUFI 1040
13 7 G G/S 126 TOYOTA 1050
MY REQUIRED RESULT
BRAND Shops
1 5
2 3
3 3
我的问题
select p.brand, count(s.shcode) AS shops
FROM product p
INNER JOIN sdetail s on s.pcode = p.pcode
GROUP BY p.brand
逻辑:连接两个表,获得不同的店铺品牌对,按品牌分组,并获得店铺计数。我认为您需要的是在计数函数中对shcode进行区分。所以试试这个:
select p.brand, count(distinct(s.shcode)) AS shops
FROM product p
INNER JOIN sdetail s on s.pcode = p.pcode
GROUP BY p.brand
这里有一个例子来说明这一点。品牌1只有5家商店???什么布尔pcode 124??你能解释两个表之间的关系吗?在第一个表中,我为所有产品定义了一个品牌。然后我想按品牌对商店进行分组统计。因为第二张桌子上没有品牌。我是从第一张桌子上拿的。好的……品牌1提到的商店数量是错误的吗?根据你表格中的数据,应该是7。不,应该是5。如果他购买一个品牌的两种产品,那么必须将其计算为1而不是2。如果我使用此查询,这将计算行数,然后按品牌对其进行分组。但是我想计算每个店铺一次编辑答案请检查,我没有测试过,如果发现任何问题请在这里发布选择p.brand,计算(不同的s.shcode)作为店铺从产品p内部加入s.pcode=p.pcode GROUP BY p.brandyup更简单的答案,但你们也会从我的查询中得到结果:)谢谢Prasanth Bendra。你帮了我很多。希望你们以后继续。因为我是初学者,谢谢你。你也可以帮我,不客气!作为旁注,如果大型数据集的性能是一个问题,那么我建议使用一个简单的计数。您可以比较各种解决方案的执行计划,然后选择最适合您的方案。
select p.brand, count(distinct(s.shcode)) AS shops
FROM product p
INNER JOIN sdetail s on s.pcode = p.pcode
GROUP BY p.brand