Php 在最新记录上使用JOIN的mySQL查询不是所有记录
以下代码用于获取记录的查询。它使用electors.ID从第二个表中查找相应的投票人Php 在最新记录上使用JOIN的mySQL查询不是所有记录,php,mysql,inner-join,Php,Mysql,Inner Join,以下代码用于获取记录的查询。它使用electors.ID从第二个表中查找相应的投票人 $criteria = "FROM voting_intention,electors WHERE voting_intention.elector = electors.ID AND voting_intention.pledge IN ('C','P') AND electors.postal_vote = 1 AND electors.telephone > 0" 问题是有些选民在投票表上会有不止
$criteria = "FROM voting_intention,electors WHERE voting_intention.elector = electors.ID AND voting_intention.pledge IN ('C','P') AND electors.postal_vote = 1 AND electors.telephone > 0"
问题是有些选民在投票表上会有不止一项承诺
我只需要根据每个选民的最新投票意向.承诺日期字段进行匹配
最简单的实现方法是什么
代码的其余部分:
function get_elector_phone($criteria){
$the_elector = mysql_query("SELECT * $criteria ORDER BY electors.ID ASC"); while($row = mysql_fetch_array($the_elector)) {
echo $row['ID'].','; }
}
您可以使用带有
MAX()
函数的子选择。将以下内容添加到WHERE
子句中
AND voting_intention.date = (select MAX(date)
from voting_intention vote2
where voting_intention.elector = vote2.elector)
下面是一个您可以使用带有
MAX()
函数的子选择。将以下内容添加到WHERE
子句中
AND voting_intention.date = (select MAX(date)
from voting_intention vote2
where voting_intention.elector = vote2.elector)
这里有一个非常重要,您只想查看符合代码中前两个条件的最新行。在这种情况下,您可能希望事先过滤掉投票意向表,只需担心每个项目的最新条目。有一个问题/答案说明了如何做到这一点 尝试选择以下内容,而不是投票(从链接问题的答案中,替换一些表名和字段名):
问题url:非常多,您只想查看符合代码中前两个条件的最新行。在这种情况下,您可能希望事先过滤掉投票意向表,只需担心每个项目的最新条目。有一个问题/答案说明了如何做到这一点 尝试选择以下内容,而不是投票(从链接问题的答案中,替换一些表名和字段名):
问题url:一个说我语言的人。我不知道有一个SQLFiddle非常好是的,就像JSFIDLE一样。我喜欢用它,因为它让我在把答案扔出去之前先测试一下。另外,它允许提交者验证答案,甚至尝试其他更改。。。答案取决于个别选民在投票意向表中没有多行且日期完全相同。根据你的名字,我认为这不太可能,非常不可能。如果发生这种情况,那可能是因为有人输入错误。不过我们可以更安全地加上时间。一个说我语言的人。我不知道有一个SQLFiddle非常好是的,就像JSFIDLE一样。我喜欢用它,因为它让我在把答案扔出去之前先测试一下。另外,它允许提交者验证答案,甚至尝试其他更改。。。答案取决于个别选民在投票意向表中没有多行且日期完全相同。根据你的名字,我认为这不太可能,非常不可能。如果发生这种情况,可能是因为有人输入错误。不过,我们可以更安全地增加时间。