为什么MySQL查询会在我希望它们全部显示时省略记录?

时间:2014-09-30 16:36:29

标签: php mysql sql

我正在尝试使用SQL查询输出候选表中的所有记录。它输出了所有记录,直到我添加了INNER JOINs来输出由noteID链接的音符表中的音符数据。

它现在只输出附有说明的记录......但我希望所有记录都带有或不带有记录。

try {
    $sql   = 'SELECT candidate.Firstname, candidate.Lastname, candID, candidate.Email,
              date, userID, note, noteID, username
    FROM candidate INNER JOIN note ON LastNoteID=noteID INNER JOIN user ON userID=id';
    $result = $pdo->query($sql);
}
catch (PDOException $e) {
    $error = 'Error fetching candidates: ' . $e->getMessage();
    include $errorpage;
    exit();
}
while ($row = $result->fetch()) {
    $cands[] = array(
        'id' => $row['candID'],
        'firstname' => $row['Firstname'],
        'lastname' => $row['Lastname'],
        'email' => $row['Email'],
        'noteusername' => $row['username'],
        'notedate' => $row['date'],

    );
} 

如何解决这个问题,以便它显示候选表中有或没有注释的所有记录?

1 个答案:

答案 0 :(得分:3)

INNER JOIN不包含具有NULL列的行(就像您要求的那样)。

您是否尝试过使用LEFT JOIN或RIGHT JOIN?他们会这样做,因为他们确实带来了NULL列。