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)