Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySQL查询复杂连接,产生随机和错误数字_Php_Mysql_Join_Where - Fatal编程技术网

Php mySQL查询复杂连接,产生随机和错误数字

Php mySQL查询复杂连接,产生随机和错误数字,php,mysql,join,where,Php,Mysql,Join,Where,以下代码用于查找没有邮政投票、没有电话号码、没有特定代码的选民,这些选民被列在另一个名为“有特定承诺的投票意向”的表格中,或者根本没有列在该表格中 FROM electors,voting_intention WHERE electors.telephone > 0 AND electors.postal_vote != 1 AND ( electors.mosaic NOT IN ('E1','E2','E3') OR ( electors

以下代码用于查找没有邮政投票、没有电话号码、没有特定代码的选民,这些选民被列在另一个名为“有特定承诺的投票意向”的表格中,或者根本没有列在该表格中

FROM electors,voting_intention 
WHERE
  electors.telephone > 0 
  AND electors.postal_vote != 1 
  AND (
    electors.mosaic NOT IN ('E1','E2','E3') 
    OR (
      electors.ID = voting_intention.elector 
      AND voting_intention.pledge IN ('U','W','X')
    ) 
    OR electors.ID != voting_intention.elector
  )

目前,它正在生成超过200万条记录,是数据库中记录数的许多倍。显然有些地方出了问题,但我看不出我的错误。

看来你对选民和投票意向之间的联系缺乏定义

我希望看到这样的情况:

FROM electors e 
INNER JOIN voting_intention v 
    ON v.elector_id = e.id

显然,每个表的键都被替换为正确的键。

如果您在
选民
投票意向
表之间添加一个显式联接,会有帮助吗?它将在哪里将其添加到FROM语句-
来自选民内部联接投票意向ID=投票意向。选民
,我认为
选民身份证
投票意向
承诺
200万记录
!你在做什么?!:O@AdnanShammout200万张唱片也就不足为奇了。他加入的方式是将每一行选民与每一行投票意向结合起来。就像他说的“很多倍于数据库中的数字”^^看起来应该是这个数字。它产生了一些太多的结果。它可能在我这边,所以我只是在调试是的,应该是1.在这种情况下,我们不想要他们。v1.elector应该是TRUE而不是null,因为如果它有任何这些承诺,我们确实希望得到结果。我将你的参数重置为true,但它仍然给我相同的计数,因此我认为是其他原因造成了问题。我知道了,另一个错误是我的,它不应该出现在马赛克中,或者(有三个承诺中的任何一个,或者根本不在投票意向表中)好的,但我没有得到你的更正
v1.elector is true
。它不是整数吗?是的。爆炸。应该是V1.1版的承诺,这是真的
FROM electors e
        LEFT JOIN voting_intention v1 ON e.ID = v1.elector AND v1.pledge IN ('U','W','X') 
        LEFT JOIN voting_intention v2 ON e.ID = v2.elector
WHERE 
    e.telephone > 0 
AND e.postal_vote != 1 /* do not have a postal vote?? */
AND (e.mosaic NOT IN ('E1','E2','E3') 
     OR v1.elector IS NOT NULL
     OR v2.elector IS NULL)