2012-09-25 38 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

相关问题