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

Mysql 从同一表格的两行中选择数据

Mysql 从同一表格的两行中选择数据,mysql,sql,join,Mysql,Sql,Join,我有一个名为TransferRequest的表,其中有两列是(ReceivingGuill,CurrentGuill)。它们都引用带有列的表(prisonID,location)。 我需要某种形式的连接来显示两个监狱的“位置”,例如结果:“华盛顿”、“纽约”。 我知道要从一个表中获取位置,我可以: SELECT Prison.location FROM Prison JOIN TransferRequest ON Prison.prisonID = TransferRequest.curre

我有一个名为TransferRequest的表,其中有两列是(ReceivingGuill,CurrentGuill)。它们都引用带有列的表(prisonID,location)。 我需要某种形式的连接来显示两个监狱的“位置”,例如结果:“华盛顿”、“纽约”。 我知道要从一个表中获取位置,我可以:

SELECT Prison.location  
FROM Prison
JOIN TransferRequest
ON Prison.prisonID = TransferRequest.currentPrison;
以及:


但我不知道如何从同一类型的表中选择两个相同类型的项。我该怎么办才能得到这张桌子?(标题:当前位置,接收位置)。

相关子查询可以:

SELECT P1.location AS location1

, (SELECT Prison.location  
FROM Prison
JOIN TransferRequest
ON Prison.prisonID = TransferRequest.receivingPrison ) AS location2

FROM Prison P1
JOIN TransferRequest T1
   ON P1.prisonID = T1.currentPrison;
您可以使用以下选项:

SELECT (SELECT       prison.Location
        FROM         TransferRequest tr
        INNER JOIN   Prison prison ON tr.reciveingPrisonID = prison.prisonID
        WHERE        tr.reciveingPrisonID = 1) AS'Recieving Location',
       (SELECT       prison.Location
        FROM         TransferRequest tr
        INNER JOIN   Prison prison ON tr.currentPrisonID = prison.prisonID
        WHERE        tr.currentPrisonID = 4) as 'Current Location'
请看这里->


希望这有帮助

也许我遗漏了什么,但如果您只想获取当前监狱和接收监狱的位置名称,您可以通过两次加入
监狱
表来获取它们:

SELECT 
  rec_prison.location as 'Recieving Location',
  cur_prison.location as 'Current Location'
FROM TransferRequest tr
INNER JOIN Prison rec_prison 
  ON rec_prison.prisonID = tr.receivingPrison 
INNER JOIN Prison cur_prison 
  ON cur_prison.prisonID = tr.currentPrison;

显示两个监狱的“位置”是什么意思?这两个监狱是什么?现在TransferRequest表有两列rP和cP。它们都有引用表监狱的ID,如(rP,cP):(1,3)、(2,4)、(5,1)。监狱有ID,还有一列有位置(prisonID,location):(1,纽约),(2,华盛顿),(3,奥兰多),(4,锡拉丘兹),(5,布法罗)他们都引用了一个表监狱,表中有列,在这些列上进行连接的具体列是什么?所以基于这些示例,我想要的结果是:(纽约,奥兰多),(华盛顿,锡拉丘兹),(纽约州布法罗市)。你是说
TransferRequest
参考
监狱
上的
监狱.ID=TransferRequest.ID
SELECT 
  rec_prison.location as 'Recieving Location',
  cur_prison.location as 'Current Location'
FROM TransferRequest tr
INNER JOIN Prison rec_prison 
  ON rec_prison.prisonID = tr.receivingPrison 
INNER JOIN Prison cur_prison 
  ON cur_prison.prisonID = tr.currentPrison;