sql子查询,传递变量
您能像这样将变量传递到子查询中吗sql子查询,传递变量,sql,activerecord,subquery,Sql,Activerecord,Subquery,您能像这样将变量传递到子查询中吗 SELECT users.id AS id, (SELECT SUM(total) FROM (image_totals) WHERE `cat_id` IN ('5', '3') AND `user_id` =id) AS image_count 这只是一个较大查询的一部分,所有查询都是通过活动记录生成的,但关键问题仍然是“id”变量,如何将其传递到子查询中?我看错了吗 提前谢谢。如果您需要更多信息,请告诉我。不,这是不可能的,必须以不同的方式实施 Sel
SELECT users.id AS id,
(SELECT SUM(total) FROM (image_totals) WHERE `cat_id` IN ('5', '3') AND `user_id` =id) AS image_count
这只是一个较大查询的一部分,所有查询都是通过活动记录生成的,但关键问题仍然是“id”变量,如何将其传递到子查询中?我看错了吗
提前谢谢。如果您需要更多信息,请告诉我。不,这是不可能的,必须以不同的方式实施 Select必须从一个一致的数据集中进行选择 您的数据集可能包含复杂的查询。使用分组依据。您需要每个user.id的SUM(total)作为cat_id的特定值。我不知道您的查询的其余部分是什么样子,但对于显示的内容,您可以:
SELECT
users.id AS id,
SUM(total)
FROM image_totals
WHERE cat_id IN ('5', '3')
GROUP BY users.id
如果我正确理解了你的问题,那么是的,你可以 如果表中不包含相同的列,则不需要每个列的表名。我更喜欢包含表名,因为它更容易理解
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
您还可以对表使用alias,以使其更易于键入。u=用户,i=图像\总计
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
谢谢你的回答。我也这么想。正确的方法是什么?加入?