如何通过JOIN关联多表,用WHERE筛选team_id=91的member_network数据?
解决SQL关联报错:missing FROM-clause entry for table "team_member"
- 你的疑问答案是肯定的:必须新增JOIN关联team_member表。
- 报错原因很明确:你的SQL里引用了
team_member表的字段,但完全没把这个表加入查询的表集合中,数据库找不到该表的定义,所以抛出这个错误。 - 结合你的表结构,正确的关联逻辑应该是:
member_network与team_member_network通过member_network.id = team_member_network.member_network_id关联(team_member_network的member_network_id对应member_network的主键id)team_member_network与team_member通过team_member_network.team_member_id = team_member.id关联(team_member_network的team_member_id对应team_member的主键id)
- 修正后的SQL语句(给表加了别名提升可读性):
SELECT mn.network_profile_name FROM member_network mn LEFT JOIN team_member_network tmn ON mn.id = tmn.member_network_id LEFT JOIN team_member tm ON tmn.team_member_id = tm.id WHERE tm.team_id = 91;
如果业务上只需要返回有对应团队关联的成员网络数据,可以把LEFT JOIN替换成INNER JOIN,过滤掉无关联的记录。
内容的提问来源于stack exchange,提问作者Filip Stojavonic
相关产品推荐
相关产品推荐

