0

我需要像选举系统一样进行一些思考,以便工作人员选择一个选举并为我的数据库中的每个人选择是否投票,并将其保存到另一个数据库表中,但如果我已经选择了一个人在一个选举它不应该再问我,但如果我选择另一个选举它会再问一次。我对一切都使用 PHP 和 MySQL。

我有不同的查询,例如:

SELECT * 
FROM   personas 
          LEFT OUTER JOIN votaciones 
                 on personas.id = votaciones.id_persona 
WHERE  personas.seccion = 6  AND 
       personas.mesa LIKE 'U' AND 
       votaciones.id_eleccion IS NULL 
LIMIT 5

目前我有 3 张桌子。1 里面有人,它有它的 id、名字、第二个名字,以及他去哪张桌子投票,然后是所有不同选举的另一张桌子,比如 2000 年的全国选举,最后是人们所做的投票。

最后一个是 Id_person 作为人民的外键,id_elecction 来自选举,投票是 1 或 0(是和否)。

如果是 1 次选举,那会很容易,但有很多,我不知道有多少,因为您将来可以添加更多选举。

感谢每一个回答任何问题的人。

问题:我需要想出一个查询,它会给出仍未投票给特定选举的人的姓名,就像所有没有在选举 1 中投票的人一样。如果一个人在选举 1 中投票但仍然没有在选举中投票2. 当我要求选举 1 时,那个人不会出现,但当我要求选举 2 时,他会出现,因为他还没有投票。

就像是:

SELECT distinct id, nombre, apellido1,
       apellido2, personas.seccion 
FROM  personas 
        LEFT JOIN votaciones 
             on personas.id = votaciones.id_persona 
WHERE  personas.seccion = 1 AND 
       mesa = 'A' AND 
      (id_eleccion IS NULL OR NOT EXISTS 
                 (SELECT * 
                  FROM votaciones
                  WHERE id_eleccion = 2 )
       ) 
4

1 回答 1

0
    SELECT distinct id,nombre, apellido1,apellido2, personas.seccion from personas
      LEFT JOIN votaciones on personas.id = votaciones.id_persona 
       WHERE personas.seccion = 1 AND mesa = 'A' 
        AND (id_eleccion IS NULL OR id 
         NOT IN (SELECT id FROM personas JOIN votaciones ON personas.id = votaciones.id_persona WHERE id_eleccion =1))

这就是我得出的结论。

于 2012-08-02T23:32:44.737 回答