Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL连接查询:两个主表和一个链接表_Mysql_Join - Fatal编程技术网

MySQL连接查询:两个主表和一个链接表

MySQL连接查询:两个主表和一个链接表,mysql,join,Mysql,Join,我有一个星球大战项目,我正在为大学工作 在我的数据库中,我有多个表和链接表。我想问一下 雷伊、欧比-万·克诺比和其他人使用了什么交通方式 C-3PO 答案显然是千年隼 我已经使用内部联接设置了查询,但最后还是卡住了 SELECT t.type AS OnlyTransportItCouldBe FROM transport AS t INNER JOIN person_transport AS pt ON pt.transport_id = t.id INNER JOIN person AS

我有一个星球大战项目,我正在为大学工作

在我的数据库中,我有多个表和链接表。我想问一下

雷伊、欧比-万·克诺比和其他人使用了什么交通方式 C-3PO

答案显然是千年隼

我已经使用内部联接设置了查询,但最后还是卡住了

SELECT t.type AS OnlyTransportItCouldBe 
FROM transport AS t
INNER JOIN person_transport AS pt
ON pt.transport_id = t.id
INNER JOIN person AS p
ON pt.person_id = p.id
WHERE p.name = 'Rey'

上面返回了3艘船,但我对如何检查老Ben和Goldenrod感到困惑。我试过了,p.name=Obi-Wan-Kenobi,结果为空。如果我尝试p.name='Rey','Obi-Wan-Kenobi'的位置失败,如果我尝试p.name='Rey'和'Obi-Wan-Kenobi'的位置,结果为空。我知道这很简单,但我似乎找不到解决办法。

如果您的要求是获得雷伊、欧比-万·克诺比和C-3PO使用的通用运输方式,那么您必须按类型分组,并添加一个having条款,如:

SELECT t.type AS OnlyTransportItCouldBe 
FROM transport AS t
INNER JOIN person_transport AS pt ON pt.transport_id = t.id
INNER JOIN person AS p ON pt.person_id = p.id
WHERE p.name IN ('Rey', 'Obi-Wan Kenobi', 'C-3PO')
GROUP BY t.type
HAVING COUNT(DISTINCT p.name) = 3

好的,我试过了——或者p.name在‘Rey’、‘Obi-Wan Kenobi’、‘C-3PO’中的位置,它出错了,所以我试过了——p.name在‘Rey’、‘Obi-Wan Kenobi’、‘C-3PO’中的位置,它返回了所有与它们相关的船只。请通过编辑而不是评论来澄清。请在代码问题中给出一个-剪切粘贴&可运行的代码,包括作为代码输入的最小代表性示例;期望和实际输出,包括逐字记录错误消息;标签和版本;清晰的说明和解释。给出你能给出的最少代码,即你显示的代码是OK的,扩展为你显示的代码是不OK的。调试基础。对于包含DBMS和DDL(包括约束和索引)的SQL,请输入格式化为表的代码。停止尝试编码你的总体目标,并解释你期望从给定的代码中得到什么以及为什么。这是一个常见问题解答。在考虑发帖之前,请阅读本手册,谷歌搜索任何错误信息,或您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括或不包括您的特定字符串/名称和网站:stackoverflow.com&tags;阅读许多答案。如果你发布一个问题,用一句话作为标题。请参见文本上方的投票箭头(&S)。除非我们努力重新写清楚,否则我们无法推理、交流或搜索。Hi forpas的副本。不完全是。我想做的是展示他们唯一使用过的飞船。我确实尝试了您建议的代码,但它返回了一个空结果。但是,将DISTINCT从3更改为2起作用。谢谢你,伙计