我试图理解为什么我没有在使用postgresql的rails应用程序上的ruby上收到任何记录。这是正在执行的SQL查询:
SELECT g.program_id, g.title,
COALESCE(COUNT(pr), 0) AS ac, g.default
FROM groups AS g
LEFT OUTER JOIN memberships AS m ON m.group_id = g.id
LEFT OUTER JOIN progresses AS pr ON m.id = pr.participant_id
AND (pr.status = 'completed')
WHERE g.program_id = ANY(@1)
GROUP BY g.id
ORDER BY g.program_id, g.position, g.id
我的问题是:ANY(@1)
意味着什么?
请耐心等待,因为我是ruby / rails / postgresql新手。
谢谢!
更新:添加了一些附加代码。请不要认同下面的查询,因为它已在上面提出。
class StatsComponents::CompletedActivitiesPerGroupStats
include StatsComponent::Interface
GROUP_ACTIVITIES = <<-SQL
g.program_id, g.title, COALESCE(COUNT(pr), 0) AS ac, g.default
FROM groups AS g
LEFT OUTER JOIN memberships AS m ON m.group_id = g.id
LEFT OUTER JOIN progresses AS pr ON m.id = pr.participant_id
AND (pr.status = 'completed')
WHERE g.program_id = ANY(@1)
GROUP BY g.id
ORDER BY g.program_id, g.position, g.id
SQL
def generate
...
答案 0 :(得分:1)
它选择g.program_id
在@1
请求返回的数组中存在值的记录,它们在程序中的某个位置设置为查询参数(例如SELECT...
)。
您可以在此处使用SOME(@1)
。
严格地说,这不是一个SQL查询。虽然没有sql.execute
或类似内容,但它只是一个多行字符串分配。