Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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_Sql - Fatal编程技术网

如何在MYSQL中连接具有相同实例的相同表?

如何在MYSQL中连接具有相同实例的相同表?,mysql,sql,Mysql,Sql,假设我在MYSQL中有以下表 Sailors (sid,sname,rating,age) where sid-> Sailor's id, Reserves (sid,bid,day) where bid-> boat's id 我的问题是: 找到在同一天驾驶过两艘不同船只的水手的名字吗 首先,我尝试加入储备表的两个副本,并添加一个条件,即出价必须不同 SELECT * FROM reserves R1,reserves R2 WHERE R1.day = R2.day AN

假设我在MYSQL中有以下表

Sailors (sid,sname,rating,age) where sid-> Sailor's id, 

Reserves (sid,bid,day) where bid-> boat's id
我的问题是:

找到在同一天驾驶过两艘不同船只的水手的名字吗

首先,我尝试加入储备表的两个副本,并添加一个条件,即出价必须不同

SELECT * FROM reserves R1,reserves R2 WHERE R1.day = R2.day AND R1.bid <> R2.bid;
我得到如下输出:-

现在,query需要水手的名字,因此我必须将sealers表与这个结果表连接起来

现在,如何应用join条件操作以获得所需的结果?

尝试以下操作:

SELECT *,s.SName As SailorName 
FROM reserves R1
INNER JOIN reserves R2 ON R1.day = R2.day AND R1.bid <> R2.bid
INNER JOIN Sailors s ON R2.sid = s.sid
您应该将表sealers添加到FROM子句并添加条件:表sealers的sid列和R1列相等

请尝试以下查询:

SELECT *
FROM Reserves R1
INNER JOIN Reserves R2 ON R1.sid=R2.sid AND R1.bid<R2.bid AND R1.date=R2.date
INNER JOIN Sailors S ON R1.sid=S.sid

我还添加了必要的条件:R1.sid=R2.sid,这是您在查询中遗漏的

两个表的模型描述不完整。另外,加入r1和r2的查询可能应该在。。。和R1.bid>R2.bid以避免无序元组上的重复。@Sebas我应该提供该表的实例吗?我的意思是,您的定义中似乎缺少一些列,例如reserves中的day列。我想我们需要他们加入,否则我不知道你怎么能加入水手和预备队together@Sebas那是个打字错误!!我的错。我现在已经改正了…@Sebas也许使用sid会是一个明显的想法
SELECT *
FROM Reserves R1
INNER JOIN Reserves R2 ON R1.sid=R2.sid AND R1.bid<R2.bid AND R1.date=R2.date
INNER JOIN Sailors S ON R1.sid=S.sid