如何在连接表是一对多时创建SQL查询
我有一张候选人表和一张笔记表,每个候选人有多个笔记。如何在连接表是一对多时创建SQL查询
我试图运行一个SQL查询来获得一个特定的候选人的详细信息由他们的ID(candID)和备注匹配候选人。
我不太清楚如何做到这一点,因为会有很多笔记返回。我需要做两个单独的查询吗?
这里就是我这么远,但它是不完整的(坦率是候选的ID,candidateID是在说明表中的相关ID字段):
try {
$sql = 'SELECT Firstname, Lastname, candID, Email, note
FROM candidate RIGHT JOIN notes ON candID=candidateID WHERE candID='.$loadcandID.'';
$result = $pdo->query($sql);
}
catch (PDOException $e) {
$error = 'Error fetching candidate: ' . $e->getMessage();
include $errorpage;
exit();
}
$row = $result->fetch();
$cand = array(
'firstname' => $row['Firstname'],
'lastname' => $row['Lastname'],
'email' => $row['Email'],
);
要做到JOIN正常,你有在查询中具体 -
SELECT `candidate`.`Firstname` AS `first`, `candidate`.`Lastname` AS `last`, `candidate`.`candID` AS `id`, `candidate`.`Email` AS `email`, `notes`.`note` AS `note`
FROM `candidate`
LEFT JOIN `notes`
ON `candidate`.`candID` = `notes`.`candidateID`
WHERE `candID` = '1'
谢谢,那么如何处理结果中有很多笔记,但只有一个名字,姓氏等?我目前使用$ row = $ result-> fetch(); – dlofrodloh 2014-10-01 20:34:28
使用'$ row = $ result-> fetch(PDO :: FETCH_ASSOC)'并进行我添加的更改,即AS语句。例如,你会在'$ row ['first']''$ row ['note']''等中看到名字。 – 2014-10-01 20:38:13
啊,完美谢谢 – dlofrodloh 2014-10-01 20:55:41
单个JOIN查询就足以得到你想要的。你可以设置一个[SQL小提琴](http://sqlfiddle.com/)?我们可以帮助您查询。 – 2014-10-01 20:27:41
我从来没有使用SQL小提琴,我可能不得不打开另一个关于如何使用它的问题! – dlofrodloh 2014-10-01 20:36:23
:)这是相当不言自明的,并有良好的文档。 – 2014-10-01 20:41:04