2013-05-30 93 views
1

有人可以帮我组合下面的2个查询吗?目标是在php中创建Speaker和Organizer变量(也在下面)。谢谢!结合2个查询的MySQL

$query= " 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mSpeaker"; 

$query= " 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mOrg"; 


$Speaker = $row['uFirst'] . " " . $row['uLast']; 

$Organizer = $row['uFirst'] . " " . $row['uLast']; 

回答

1

假设一个满足了一个扬声器,你可以使用连接来获得在一行中的相遇细节一个组织者。

$query= "SELECT srMeet.mOrg, 
      srMeet.mSpeaker, 
      UserSpeaker.uID AS SpeakerUid, 
      UserSpeaker.uFirst AS SpeakerFirst, 
      UserSpeaker.uLast AS SpeakerLast, 
      UserOrganizer.uID AS OrganizerUid, 
      UserOrganizer.uFirst AS OrganizerFirst, 
      UserOrganizer.uLast AS OrganizerLast 
     FROM srMeet 
     INNER JOIN users UserSpeaker 
     ON UserSpeaker.uID = srMeet.mSpeaker 
     INNER JOIN users UserOrganizer 
     ON UserOrganizer.uID = srMeet.mOrg"; 
+0

完美,谢谢! – user1041931

0

你为什么不使用UNION

$query= " 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mSpeaker 
UNION 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mOrg" 
+0

但是,这是如何帮助获得我需要的两个单独的值?以前,我使用过类似“users.uFirst AS'的SpeakerFN'”,但我不知道如何在这里做。 – user1041931

1

你可以参加在查询同一个表多次使用AS给他们的别名。 AS关键字实际上是可选的,但我始终将其作为对自己的说明。

这里的INNER JOIN表示每个会议必须同时具有组织者和发言者。如果有机会在没有组织者或演讲者的情况下举行会议,则可能需要使用LEFT OUTER JOIN s并执行一些操作来处理NULL值。

SELECT CONCAT(s.uFirst, ' ', s.uLast) AS speaker, 
    CONCAT(o.uFirst, ' ', o.uLast) AS organizer 
FROM srMeet 
INNER JOIN users AS s 
ON users.uID = srMeet.mSpeaker 
INNER JOIN users AS o 
ON users.uID = srMeet.mOrg; 


$Speaker = $row['speaker']; 

$Organizer = $row['organizer'];