如果在第一个MySQL TABLE中找不到,如何在第二个TABLE中进行搜索?

时间:2012-10-10 06:00:15

标签: php mysql

我在使用MySQL / PHP。这是一个邮政编码数据库。第一个表格包含邮政编码和每个邮政编码的平均AGI。但这不是一个完整的邮政编码表,因为国税局不包括提交的纳税申报表少于250的邮政编码数据。此外,有些邮政编码适用于邮政信箱,也可能没有任何邮政编码的平均AGI数据。

我希望能够通过邮政编码搜索第一个具有平均AGI的表,如果找不到邮政编码,我希望它搜索第二个表,并在PHP中显示一条消息:

echo "The $zipcode was not found." . "<br>";
if (isset($pobox)) {
    echo "Because $zipcode is a PO Box" . "<Br>";
} else {
    echo "It may contain fewer than 250 tax returns filed." . "<br>";
}

以下是PHP中MySQL的查询:

$result = mysql_query("
select zip
from zip_codes
where zip=$zipcode;") or exit(mysql_error());

第二个TABLE称为zip_code_types,其中包含邮政编码是否适用于邮政信箱,或其他与此无关的信息。

这应该通过在一次搜索中组合两个表来完成吗?或者应该进行两次单独的查询?

如何检查第一个MySQL查询是否找不到任何内容?返回什么,在哪里,还有另一个功能需要检查吗?如果我完全不知道应该怎么做,请赐教。谢谢!

4 个答案:

答案 0 :(得分:1)

不鼓励使用mysql_函数。相反,应该使用MySQLi或PDO_MySQL扩展。 要回答您的问题,您可以检查 SELECT 查询返回的行数,并在需要时继续进行下一个查询,例如:

$result = mysql_query("select zip from zip_codes where zip=$zipcode;") or exit(mysql_error());
if( mysql_num_rows($result) > 0 ) {
   //return the result
}
else {
  //your next query here
}

你的意思是这样吗

答案 1 :(得分:1)

如果数据不在第一个表中的事实是有意义的,那么您应该进行两次单独的搜索。而且既然你想要呈现一条消息,那么它似乎是有意义的。您可以使用'union'运算符在单个select语句中 进行此操作,但是您真的无法判断数据何时来自一个表而不是另一个表。你没有加入任何东西,所以外连接不会有帮助(而且它们会很难看,解释结果的代码会过于复杂)。不,在我看来,你最好只做几次搜索。其他人可能会有其他一些很好的见解,但再次搜索并不是一件大事吗?

答案 2 :(得分:0)

你必须像这样编写你的查询

$result = mysql_query("select zip from zip_codes where zip='$zipcode'") or exit(mysql_error());
if(mysql_num_rows($result) == 0)
{
    //query for searching in another table
}
else {
   // your code
}

并使用MysqliPDO代替Mysql_*

答案 3 :(得分:0)

使用联合查询,但使查询也返回包含源的字段。

喜欢这个。

选择zip,'zip'作为来自zip-codes的来源,其中zip = $ zip 联盟 选择zip,'pobox'作为源自poboxs的zip = $ zip