【发布时间】:2020-12-13 13:31:33
【问题描述】:
我有一个电影、演职员表、人物和角色表(如下),我想查找既是演员又是导演的人的姓名。
电影(表格)
id int
title
学分(表)
id int
movie_id int
person_id int
role_id int
人(表)
id int
name
角色(表)
id int
role (Actor, Director)
这就是我所做的:
SELECT p.name, r.role, m.role_id
FROM mtm_credits m
JOIN people p ON p.id = m.person_id
JOIN roles r ON r.id = m.role_id
WHERE role = 'Director' AND role = 'Actor';
但是,我得到 0 个结果。任何建议表示赞赏。
【问题讨论】:
-
显示一些示例数据和预期结果。
-
role怎么可能同时是Director和Actor?根据您需要加入角色表两次或需要使用OR(或IN)而不是AND。 -
请只标记一个RDBMS,MySQL和SQL Server是不同的产品。
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
-
您的总体目标是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:*.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
标签: mysql sql join where-clause having-clause