取出一条记录的同时顺便把另外一个表里对应的记录数也取出,只能用子查询了吗?就是一对多关系

2013-07-09 16:49:47 +08:00
 iloveyou
SELECT *,(SELECT COUNT(*) FROM item WHERE category = category.id) as item_count FROM category

还有别的更优化的方法吗?
3384 次点击
所在节点    MySQL
15 条回复
fangzhzh
2013-07-09 16:55:30 +08:00
可不可以不要select *, 表结构一变,你这代码就随时可能爆炸啊
iloveyou
2013-07-09 16:58:05 +08:00
@fangzhzh 我这是为了节省篇幅
另外,好多框架带的orm,new model不都是*吗?
再另外,主贴的问题你有什么看法?
fangzhzh
2013-07-09 16:59:25 +08:00
除了select*不能接受, 你这写法我能接受
sutar
2013-07-09 17:01:24 +08:00
JOIN
iloveyou
2013-07-09 17:04:31 +08:00
@sutar 小生愚钝 求赐教
takwai
2013-07-09 17:04:45 +08:00
@iloveyou 好多框架带的orm,new model不都是*吗?这是错的,可以自定义筛选字段。
lichao
2013-07-09 17:06:25 +08:00
select category.field1, item.field2 from category, item where item.categoryID = category.categoryID
iloveyou
2013-07-09 17:10:11 +08:00
@takwai yii里面有个findByPk(1),不就是*吗。
iloveyou
2013-07-09 17:11:00 +08:00
@lichao 你没明白我主贴的意思
lichao
2013-07-09 17:15:39 +08:00
select category.categoryName, count(item.itemID) as YOUR_COUNT from category, item where item.categoryID = category.categoryID group by category.categoryID
lichao
2013-07-09 17:16:13 +08:00
select category.categoryID, count(item.itemID) as YOUR_COUNT from category, item where item.categoryID = category.categoryID group by category.categoryID
cdfmr
2013-07-09 17:19:35 +08:00
select category, count(*) from item group by category,将此临时表与category表做联合查询。
msg7086
2013-07-09 18:37:24 +08:00
可以分两次执行查询,不一定要一次拿回数据吧。真要一次取回的话考虑API里的multi-query?

比如PHP里, http://php.net/mysqli-multi-query
master
2013-07-09 20:08:18 +08:00
话说为什么不用JOIN ?
比如像这样:

SELECT category.*, COUNT(item.id) as item_count FROM category LEFT JOIN item ON item.category = category.id
master
2013-07-09 20:09:17 +08:00
抱歉,漏了 GROUP

SELECT category.*, COUNT(item.id) as item_count
FROM category
LEFT JOIN item ON item.category = category.id
GROUP BY category.id

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/75245

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX