2014-10-01 89 views
0

我有一張候選人表和一張筆記表,每個候選人有多個筆記。如何在連接表是一對多時創建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'], 

    ); 
+0

單個JOIN查詢就足以得到你想要的。你可以設置一個[SQL小提琴](http://sqlfiddle.com/)?我們可以幫助您查詢。 – 2014-10-01 20:27:41

+0

我從來沒有使用SQL小提琴,我可能不得不打開另一個關於如何使用它的問題! – dlofrodloh 2014-10-01 20:36:23

+0

:)這是相當不言自明的,並有良好的文檔。 – 2014-10-01 20:41:04

回答

1

要做到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' 
+0

謝謝,那麼如何處理結果中有很多筆記,但只有一個名字,姓氏等?我目前使用$ row = $ result-> fetch(); – dlofrodloh 2014-10-01 20:34:28

+0

使用'$ row = $ result-> fetch(PDO :: FETCH_ASSOC)'並進行我添加的更改,即AS語句。例如,你會在'$ row ['first']''$ row ['note']''等中看到名字。 – 2014-10-01 20:38:13

+0

啊,完美謝謝 – dlofrodloh 2014-10-01 20:55:41