下面的查询返回在bumps
表中同时具有loginid
和ip2
的行。
bumps
表中的所有行都有 ip2
,但只有一些行有 loginid
。
如何让下面的查询返回所有行的ip2
,并为具有loginid
的行返回loginid
?
$sqlStrend = "SELECT e.loginid, e.time, l.username, e.ip2
FROM bumps e
JOIN login l ON e.loginid = l.loginid
WHERE e.submissionid = '$submissionid'
ORDER BY e.time DESC
LIMIT $offset, $rowsperpage";
而不是INNER JOIN
(由JOIN
暗示),你只需要将其更改为 LEFT JOIN
,它返回左侧表上的所有行以及相关或NULL
相关表中不存在行的行。
SELECT e.loginid, e.time, l.username, e.ip2
FROM bumps e
LEFT JOIN login l ON e.loginid = l.loginid
WHERE e.submissionid = '$submissionid'
ORDER BY e.time DESC
LIMIT $offset, $rowsperpage
查看这篇优秀的维基百科文章或 Jeff Atwood 的联接视觉解释中的不同JOIN
类型。
你实际上大部分时间都在。要从凹凸中获取所有行和存在的登录行,您需要一个左联接:
$sqlStrend = "SELECT e.loginid, e.time, l.username, e.ip2
FROM bumps e
LEFT JOIN login l ON e.loginid = l.loginid
WHERE e.submissionid = '$submissionid'
ORDER BY e.time DESC
LIMIT $offset, $rowsperpage";