在PHP中按顺序查询多个MSSQL表中的一个值

时间:2011-05-24 23:28:24

标签: php sql sql-server for-loop while-loop

我有2个表我需要查询单个结果,但是如果它在$ table0中找到,我需要停止搜索并使用该行中的值。像这样:

$p1_sql = "SELECT TOP 1 * FROM '$table0' WHERE phone1 = '$cidnumber'";
$p2_sql = "SELECT TOP 1 * FROM '$table0' WHERE phone2 = '$cidnumber'";
$c1_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone = '$cidnumber'";
$c2_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone2 = '$cidnumber'";
$c3_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone3 = '$cidnumber'";
$c4_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone4 = '$cidnumber'";

$p1_res = mssql_query($p1_sql);
$p1_row = mssql_num_rows($p1_res);

$p2_res = mssql_query($p2_sql);
$p2_row = mssql_num_rows($p2_row);

$c1_res = mssql_query($c1_sql);
$c1_row = mssql_num_rows($c1_res);

$c2_res = mssql_query($c2_sql);
$c2_row = mssql_num_rows($c2_res);

$c3_res = mssql_query($c3_sql);
$c3_row = mssql_num_rows($c3_res);

$c4_res = mssql_query($c4_sql);
$c4_row = mssql_num_rows($c4_res);

if ($p1_row = 1){
    $p1_res = $newres;
    goto okres;
} elseif ($p2_row = 1) {
    $p2_res = $newres;
    goto okres;
} elseif ($c1_row = 1) {
    $c1_res = $newres;
    goto okres;
} elseif ($c2_row = 1) {
    $c2_res = $newres;
    goto okres;
} elseif ($c3_row = 1) {
    $c3_res = $newres;
    goto okres;
} elseif ($c4_row = 1) {
    $c4_res = $newres;
    goto okres;
} else {
    $newres = "na";
    goto nares;
}

okres:
$cid_sel = mssql_query("SELECT TOP 1 * FROM '$table0' WHERE phone1 = '$cidnumber'");
然而,这是丑陋的,不起作用。我试图使用'for each ...'或'while(something)',但无法理解它是如何工作的。我甚至不知道是否会这样。最好的方法是什么?这是我第一次参加这样的活动,感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

没有必要这么多单独的查询。对于JOIN和UNION,您熟悉基本SQL吗?如果没有,你应该阅读它们 - 你想要的东西似乎可以用一个查询来实现。

答案 1 :(得分:0)

我会将不同的查询添加到数组并循环(使用foreach)该数组以后续查询数据库。一旦你找到了你想要的东西,你就可以使用休息时间突破循环;命令。

在纯sql中使用连接也可以是一个解决方案,但我不完全确定你希望在这里实现什么。

祝你好运!