2012-07-17 46 views
0

我有一個方法可以從我創建的比賽系統返回數據。我有一個問題,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; 
      } 

     } 
    } 
+0

也請不要提到我不應該使用mysql_ *功能,我還沒有改變物體使用準備好的陳述 – TurdPile 2012-07-17 01:47:23

+0

你可以在那裏添加「HAVING COUNT(P.id)> 0」嗎? – pilotcam 2012-07-17 02:01:16

+0

謝謝你的作品,意識到我還有另一個問題 - COUNT(P.id)總是返回完整的表格,而不是僅僅使用INNER JOIN ..思路設置的表格。 – TurdPile 2012-07-17 02:17:29

回答

2

在MySQL中,COUNT(像其他合計不匹配的行函數)將始終返回結果。您可以通過使用GROUP BY來解決此問題,這將返回每行的聚合結果。你可能會想和你在GROUP BY列出列的發揮,但也許是這樣的:

$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}' 
        GROUP BY T.id,T.name,T.description,T.checkin,date") or die(mysql_error()); 
+0

查詢更多的是一個起點 - 你可能需要列出GROUP BY行中的所有列爲我編輯了我的答案來展示。 – 2012-07-17 02:27:05

+0

是的,我意識到這一點,這要感謝pilotcam,因此我刪除了評論哈哈 - 感謝的方式 – TurdPile 2012-07-17 02:33:56

+0

哈哈,現在我看起來像我在跟自己說話。祝你好運! – 2012-07-17 02:35:18