你可以将变量传递给子查询吗?
SELECT users.id AS id,
(SELECT SUM(total) FROM (image_totals) WHERE `cat_id` IN ('5', '3') AND `user_id` =id) AS image_count
这只是较大查询的一部分,所有这些都是通过Active Record生成的,但关键问题仍然是,' id'变量,我怎么能把它传递给我的子查询?我看这一切都错了吗?
提前致谢。如果您需要更多信息,请告诉我。
答案 0 :(得分:3)
如果我理解你的问题,那么你可以。
如果表中不包含相同的列,则不需要每列的表名。我更喜欢包含表名,因为它更容易理解。
SELECT users.id AS id ,
(SELECT SUM(image_totals.total)
FROM image_totals
WHERE image_totals.cat_id IN ( '5', '3' ) AND
image_totals.user_id = users.id) AS image_count
FROM users
您还可以对表使用别名,以使其更容易键入。 u = user,i = image_totals。
SELECT u.id AS id ,
(SELECT SUM(i.total)
FROM image_totals AS i
WHERE i.cat_id IN ( '5', '3' ) AND
i.user_id = u.id) AS image_count
FROM users AS u
答案 1 :(得分:1)
不,这是不可能的,必须以不同的方式实施。
选择必须从一个一致的数据集中进行选择。
您的数据集可能包含复杂查询。
答案 2 :(得分:1)
使用GROUP BY。对于cat_id的特定值,您希望每个user.id的SUM(总计)。我不知道你的查询的其余部分是什么样的,但是对于显示的内容,你可以只是:
SELECT
users.id AS id,
SUM(total)
FROM image_totals
WHERE cat_id IN ('5', '3')
GROUP BY users.id