这个查询对我来说看起来非常正确。查找时发现查询中似乎存在优先级问题。
问题出在这一行 - group_membership_settings.group_id = groups.id
“on 子句”中的未知列groups.id
SELECT SQL_NO_CACHE `groups`.`name` AS `profile_name`, (
SELECT IF(
group_membership_settings.max_limit,
group_membership_settings.max_limit > (
SELECT COUNT(connection_memberships.id) FROM connection_memberships
WHERE connection_memberships.type = 'Connection::MenteeMembership'
AND connection_memberships.group_id = groups.id
), 1)
FROM programs
INNER JOIN roles ON roles.program_id = programs.id AND roles.name = 'student'
LEFT JOIN group_membership_settings ON group_membership_settings.group_id = groups.id AND group_membership_settings.role_id = roles.id
WHERE programs.id = groups.program_id
) AS `available_to_join` FROM `groups`
最佳答案
表(别名)groups
不在其自己定义的范围内。
您只能在本地查询中引用表中的列,即programs
、roles
或group_membership_settings
。
我无法判断您的意图,但您可能还必须加入内部查询中的组
。
关于mysql - 'on clause' 中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21944884/