我有3个表,usersonline
,mobsters
和gangs
。
我正在尝试为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
相关的记录。
注意:我的实际查询不会从每个表中获取所有字段,只是为了简化这样做。
答案 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