下面的查询会返回loginid
表中同时包含ip2
和bumps
的行。
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";
答案 0 :(得分:3)
而不是INNER JOIN
(隐含JOIN
),您只需要将其更改为LEFT JOIN
,它会返回左侧表格中的所有行以及相关的{或{ {1}}相关表中的行不存在。
NULL
查看this excellent Wikipedia article或Jeff Atwood's Visual Explanation of Joins中的不同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
类型。
答案 1 :(得分:1)
你实际上大部分都在那里。要从bumps中获取所有行以及用于登录的行,您需要LEFT 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";