2012-09-25 39 views
0

我有兩個數據庫:一個包含用戶:添加屬性爲列,如果第二個表包含記錄

id 
name 
course 

另一個包含

選民

id 
    personID 
    type 

選民表中的條目,當用戶投票被添加(類型描述不同的主題,用戶可以投票)

我想所有的用戶例如在persons.course = '1' AND voters.type = '2'並具有輸出包含以下幾列:ID,名稱,hasVoted(其中hasVoted返回true,如果personID可以在選民表中找到)

回答

1

左連接可能是您要查找的內容。

SELECT persons.id, persons.name, voters.personID IS NOT NULL AS hasVoted 
FROM persons LEFT JOIN voters ON (persons.id = voters.personID) 
WHERE persons.course = '1' AND voters.type = '2' 
GROUP BY persons.id 

http://dev.mysql.com/doc/refman/5.0/en/join.html

的左連接將包括聯接的左側看到所有匹配的行,並從聯接右側任意配套件。沒有匹配右側的任何左側的行將具有空值的右側列值。

至於'IS NOT NULL'或'IS NULL'被使用,因爲'X = NULL'不像它出現那樣表現。

> SELECT 'A' = NULL, 'A' IS NULL, NULL = NULL, NULL IS NULL; 
+------------+-------------+-------------+--------------+ 
| 'A' = NULL | 'A' IS NULL | NULL = NULL | NULL IS NULL | 
+------------+-------------+-------------+--------------+ 
|  NULL |   0 |  NULL |   1 | 
+------------+-------------+-------------+--------------+ 

更多關於用null工作細節: http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

+0

謝謝!就是我正在尋找的東西!我不知道「IS NOT NULL」部分。 – JNK

+1

擴大了答案,以更詳細地解釋空白部分。 – rrehbein

+0

現在我甚至可以理解左連接是如何工作的!你今天真的幫了我! – JNK

相關問題