0

私はMySQL/PHPで働いています。郵便番号データベースです。最初の表には、郵便番号と各郵便番号の平均 AGI があります。しかし、これは郵便番号の完全な表ではありません。IRS には、提出された納税申告書が 250 件未満の郵便番号データが含まれていないためです。また、一部の郵便番号は私書箱用であり、それらの郵便番号の平均 AGI データも存在しない可能性があります。

郵便番号で平均 AGI を持つ最初のテーブルを検索できるようにしたいのですが、郵便番号が見つからない場合は、2 番目のテーブルを検索して、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());

2 番目のテーブルは zip_code_types と呼ばれ、郵便番号が私書箱用であるか、それ以外の固有のものであるかが含まれます。

これは、1 回の検索で 2 つのテーブルを組み合わせて行う必要がありますか? それとも、2 つの別々のクエリを実行する必要がありますか?

最初の MySQL クエリで何も見つからないかどうかを確認するにはどうすればよいですか? 何が返され、どこで、これを確認するために必要な別の関数がありますか? これを行う方法が完全にわからない場合は、親切に教えてください。ありがとう!

4

4 に答える 4

1

Use of mysql_ functions is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used. To answer your question, you could check for number of rows returned by your SELECT query and proceed to next query if needed, like:

$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
}

Do you mean something like this

于 2012-10-10T06:07:19.900 に答える
1

データが最初のテーブルにないことに意味がある場合は、2 つの別々の検索を行う必要があります。そして、あなたはメッセージを提示したいので、それは意味があるようです. 「ユニオン」演算子を使用して単一の選択ステートメントでそれを行うこともできますが、データがいつあるテーブルから来ているのか、別のテーブルから来ているのかを実際に判断することはできません. あなたは何も結合していないので、外部結合は役に立ちません (そして、それらは醜く、結果を解釈するコードは過度に複雑になります)。いいえ、私の意見では、いくつかの検索を行った方がよいでしょう。他の誰かが他の素晴らしい洞察を持っているかもしれませんが、もう一度検索するのはそれほど大したことではありませんか?

于 2012-10-10T06:08:17.683 に答える
0

You have to write your query like this

$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
}

and use Mysqli OR PDO instead of Mysql_*.

于 2012-10-10T06:07:02.220 に答える
0

ユニオン クエリを使用しますが、クエリもソースを含むフィールドを返すようにします。

このような。

zip=$zip の郵便番号からソースとして zip、'zip' を選択 ユニオン zip=$zip の pobox からソースとして zip、'pobox' を選択

于 2012-10-10T06:21:08.613 に答える