0

私は 2 つのデータベースを持っています: 1 つにはユーザーが含まれています:

id
name
course

もう1つは含まれています

有権者

   id
   personID
   type

ユーザーが投票すると、voters テーブルへのエントリが追加されます (タイプは、ユーザーが投票できるさまざまなトピックを表します)。

たとえば、すべてのユーザーを取得しpersons.course = '1' AND voters.type = '2'、出力に次の列が含まれるようにしたい: id、name、hasVoted (ここで、personID が有権者テーブルにある場合、hasVoted は true を返します)

4

1 に答える 1

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

左結合には、結合の左側から一致するすべての行と、結合の右側から一致するすべての部分が含まれます。一致する右側がない左側の行は、右側の列の値が null になります。

「X = NULL」は表示どおりに動作しないため、「IS NOT NULL」または「IS 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

于 2012-09-25T18:11:54.193 に答える