我有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)',但无法理解它是如何工作的。我甚至不知道是否会这样。最好的方法是什么?这是我第一次参加这样的活动,感谢任何帮助。
答案 0 :(得分:2)
没有必要这么多单独的查询。对于JOIN和UNION,您熟悉基本SQL吗?如果没有,你应该阅读它们 - 你想要的东西似乎可以用一个查询来实现。
答案 1 :(得分:0)
我会将不同的查询添加到数组并循环(使用foreach)该数组以后续查询数据库。一旦你找到了你想要的东西,你就可以使用休息时间突破循环;命令。
在纯sql中使用连接也可以是一个解决方案,但我不完全确定你希望在这里实现什么。
祝你好运!