我有一個方法可以從我創建的比賽系統返回數據。我有一個問題,INNER JOIN查詢總是返回一行,不管WHERE子句是否爲真。INNER JOIN總是返回1行(即使它是空的)?
在數據庫中有兩個比賽,都是T.game ='1' - 但是如果我檢查T.game ='2'的查詢,它仍會返回一行,根據mysql_num_rows()
,當我print_r()
生成的數組除COUNT()行外是空的,但WHERE子句不應該找到任何行並將其相應描述爲mysql_num_rows()
?
我想我的主要問題是我要如何總是甚至顯示停止計數(P.id)當有在比賽表
public function fetchTournaments($gameID){
if($gameID == "" || $this->hasChar($gameID) || $this->hasSymb($gameID)){
$this->_errorMsg = "Invalid Game ID.";
return false;
}else{
$query = mysql_query("SELECT
T.id,
T.name,
T.description,
T.checkin,
DATE_FORMAT(T.date,'%b %d, %Y @ %h:%i %p') AS date,
COUNT(P.id) AS playernum
FROM tournaments T
INNER JOIN players P
ON T.id = P.tourney_id
WHERE T.game='{$gameID}'") or die(mysql_error());
$result = mysql_num_rows($query);
if($result > 0){
echo $result;
$output = mysql_fetch_array($query);
return $output;
}else{
$this->_errorMsg = "There are no tournaments for this game.";
return false;
}
}
}
也請不要提到我不應該使用mysql_ *功能,我還沒有改變物體使用準備好的陳述 – TurdPile 2012-07-17 01:47:23
你可以在那裏添加「HAVING COUNT(P.id)> 0」嗎? – pilotcam 2012-07-17 02:01:16
謝謝你的作品,意識到我還有另一個問題 - COUNT(P.id)總是返回完整的表格,而不是僅僅使用INNER JOIN ..思路設置的表格。 – TurdPile 2012-07-17 02:17:29