mysql JOINS查询

时间:2012-01-05 22:50:41

标签: mysql join

我有3个表,usersonlinemobstersgangs

我正在尝试为ONLINE USERS页面创建一个查询,该页面将运行usersonline表中的记录,将ID链接到mobsters表中的相关记录。如果流氓是团伙,我希望它也从gangs表中获取记录。

到目前为止,这是我的查询(这不起作用):

SELECT m.*, g.* FROM usersonline u 
   INNER JOIN mobsters m ON u.userID = m.id 
      JOIN gangs g ON g.id = m.gang 
         ORDER BY u.timestamp DESC

我应该使用什么样的JOIN?这个查询是否正确?

gang表是可选的,但它应始终在mobsters中与usersonline相关的记录。

注意:我的实际查询不会从每个表中获取所有字段,只是为了简化这样做。

1 个答案:

答案 0 :(得分:2)

你需要在Gangs表上加入LEFT,因为“帮派表是可选的”

e.g。

SELECT m.*, g.* FROM usersonline u 
   INNER JOIN mobsters m ON u.userID = m.id 
      LEFT JOIN gangs g ON g.id = m.gang 
         ORDER BY u.timestamp DESC