我有三张桌子。
deliverable_category 交付 passed_deliverable
我想比较这两个表(可交付和传递可传递),检查相同可交付类别的行数是否相等。
这就是我所拥有的:
$query2=mysql_query("SELECT * FROM deliverable WHERE deliverable_category_id=3 ");
if($row2=mysql_num_rows($query2)>0){
$query3=mysql_query("SELECT * FROM passed_deliverable WHERE deliverable_category_id=3");
}
if($row3=mysql_num_rows($query3)>0){
if ($row2=$row3){
echo "EQUAL ";
}
}
else {
echo "NOT EQUAL ";
}
答案 0 :(得分:4)
"哇,它有效。感谢@ Fred-ii先生 - Mark Yu"
的答案
您目前正在分配=
,而不是将==
与if ($row2=$row3)
进行比较
将其更改为if ($row2==$row3)
。
答案 1 :(得分:2)
从数据库的角度来看,这看起来非常低效,返回一组行,包含行中的每个值,这样你就可以得到一个计数?为什么不让数据库只返回计数。而不是在两个单独的查询中执行此操作,为什么不在同一查询中返回这些计数?
您只能运行一个查询:
SELECT ( SELECT COUNT(1)
FROM deliverable
WHERE deliverable_category_id=3
) AS cnt_deliverable
, ( SELECT COUNT(1)
FROM passed_deliverable
WHERE deliverable_category_id=3
) AS cnt_passed_deliverable
然后对返回的两个值进行比较。
对于所有在这个世界上美好而美好的人的爱...请停止使用mysql界面。它被弃用了。新的开发应该使用mysqli或PDO。
为什么不检查查询返回的代码,验证它是否正确执行?或者,我们只想让我们调用无效查询句柄的函数死掉。
停止疯狂。
停止。
答案 2 :(得分:2)
?? "检查同一可交付类别的行数是否相等。"
你能做到吗
SELECT IF((SELECT COUNT( * )
FROM deliverable )= (SELECT COUNT( * )
FROM passed_deliverable), '_TRUE_','_FALSE_') AS theTest
在php中完成查询并执行简单的逻辑。
???
答案 3 :(得分:1)
$num_rows1 = mysql_num_rows(mysql_query(SELECT * FROM deliverable WHERE deliverable_category_id=3));
$num_rows2 = mysql_num_rows(mysql_query(SELECT * FROM passed_deliverable WHERE deliverable_category_id=3));
if($num_rows1 != $num_rows2)
echo "not equal";