我试图为这个表构建select,但是我得到了奇怪的结果。我的桌子:
tbl_main
–––––––––––––––––-
id user_id name
tbl_friends
–––––––––––––––––-
id user_id main_id people
tbl_cats
–––––––––––––––––-
id user_id main_id现在我只知道user_id了。我想获得这些项的结果(数组):
tbl_friends.main_id=tbl_main.id
这应该是一个查询的结果。我尝试了许多计数(不同的)组合,但它不起作用,我完全迷失了。请帮帮忙。非常感谢
我试过这样的方法(见下文)。结果似乎没有问题,但它是否是正确的方法,如何做到这一点(3选择在一个查询)?那么服务器负载呢?对于大数据,它能正常工作吗?
SELECT e.id
(SELECT GROUP_CONCAT(DISTINCT ef.people) FROM tbl_friends ef WHERE ef.user_id=$user_id AND ef.main_id=e.id) as result_people,
(SELECT COUNT(DISTINCT et.user_id) FROM tbl_cats et WHERE et.main_id=e.id) as total
FROM tbl_main e
WHERE e.user_id = $user_id
ORDER BY e.id DESC发布于 2012-04-09 00:42:17
我不确定我是否理解您想要做的事情,但是这应该返回与当前查询相同的结果,并且比两个标量相关子查询更有效-
SELECT
tm.id,
GROUP_CONCAT(DISTINCT tf.people) AS result_people,
COUNT(DISTINCT tc.user_id) AS total
FROM tbl_main tm
LEFT JOIN tbl_friends tf
ON tm.id = tf.main_id
AND tm.user_id = tf.user_id
LEFT JOIN tbl_cats tc
ON tm.id = tc.main_id
WHERE tm.user_id = $user_id
GROUP BY tm.id DESC比较这两个查询的解释输出,看看结果如何。
https://stackoverflow.com/questions/10066969
复制相似问题