gpt4 book ai didi

php - 查询获取某项出现的次数

转载 作者:行者123 更新时间:2023-11-29 12:37:17 25 4
gpt4 key购买 nike

我的数据库中有一个这样的表:

id --- owner ---  product ---- type
0 --- john --- mustang ---- car
1 --- tim --- a360 ---- plane
2 --- john --- camry ---- car
3 --- dan --- a380 ---- plane
4 --- tim --- ninja ---- bike
5 --- dan --- accord ---- car

我正在尝试获取所有者拥有的每种类型的数量。像这样的事情:

John 
Car = 2
Plane = 0
Bike = 0
-------------
Tim
Car = 0
Plane = 1
Bike = 1
-------------
Dan
Car = 1
Plane = 1
Bike = 0
-------------

我一直无法解决这个问题。

另一个问题是我的数据库能够接受新类型。例如,某人可以添加自行车作为类型。

有什么办法可以做到这一点吗?

最佳答案

我处理这个问题的方式有点棘手。

我首先创建一个结果集,该结果集使用笛卡尔积为每个人和类型组合获取一行。

SELECT m.owner, t.type
FROM myTypes t, myTable m
GROUP BY m.owner, t.type

然后,我创建了另一个结果集,其中获取了所有者、类型以及该所有者的每种类型的编号。但是,这仅返回现有所有者类型组合的行。它不会返回“John”和“Plane”的任何值,因为他没有飞机产品。

SELECT m.owner, t.type, COUNT(*) as numOfType
FROM myTypes t
JOIN myTable m ON t.type = m.type
GROUP BY t.type, m.owner;

最后,我使用外连接将这两个表连接在一起,这样我就收到了所有者类型组合表中的每一行。当然,有些行返回 null 计数,因此我必须使用 IFNULL 将它们替换为 0。这与您问题中的结果集匹配。

SELECT w1.owner, w1.type, IFNULL(w2.numOfType, 0) AS numOfType
FROM (SELECT m.owner, t.type
FROM myTypes t, myTable m
GROUP BY m.owner, t.type) w1
LEFT JOIN (SELECT m.owner, t.type, COUNT(*) as numOfType
FROM myTypes t
JOIN myTable m ON t.type = m.type
GROUP BY t.type, m.owner) w2
ON w1.owner = w2.owner AND w1.type = w2.type;

这是SQL Fiddle .

关于php - 查询获取某项出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577612/

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