我想从相关的表中得到一个记录数。我可以通过中断查询和合并数组来实现所需的结果,但我知道这样做效率很低。
我正在寻找一个更清洁和有效的方法来做这件事。所有的table都是一对多的。示例:-一个用户有多个对象-一个对象有多个项
Table Users
______________
| ID | UID |
______________
| 1 | U1 |
| 2 | U2 |
______________
Table Objects
______________
| ObjID | UID |
______________
| o1 | U1 |
| o2 | U1 |
| o3 | U1 |
______________
Table Items
_________________
| itemID | ObjID |
_________________
| i1 | o1 |
| i2 | o1 |
| i3 | o1 |
| i4 | o1 |
| i5 | o1 |
| i6 | o2 |
_________________
我要寻找的u1结果是:
| Objects | Items |
| 3 | 6 |
这就是我陷入困境的地方:
select count(objects.id), count(items.id)
from users
left join Objects on objects.uid = users.uid
left join Items on items.objID = objects.objID
where users.uid = 'U1'
4条答案
按热度按时间brjng4g31#
获得所需结果的一种快速方法是使用相关子查询:
另一种方法是创建每个对象项的派生表,并连接到此表以获取每个用户项的总数:
此处演示
pod7payv2#
试试这个:
3ks5zfa03#
考虑以下几点:
http://sqlfiddle.com/#!9/d2285/1号
oalqel3c4#
试试这个:虽然我不确定你的物品数量