2016-09-28 122 views
0

我想爲我的adminpanel獲取一些統計信息。 我有兩個名爲users和cms_prosjekt的表。我想要統計與用戶具有相同屬性的多少個項目 。LEFT JOIN MySQL和PHP

每個用戶都有一個連接到項目的座右銘。例如:座右銘是精神和項目代碼是精神。它不會返回任何東西。我有兩個用戶與一個項目中的代碼相同的座右銘。

<?php 

    $result = mysql_query("SELECT 
     users.id, 

     COUNT(users.motto) AS count 
    FROM 
     users 
     LEFT JOIN cms_prosjekt ON 
     users.motto=cms_prosjekt.code 
    GROUP BY 
     users.motto"); 
$num_rows = mysql_num_rows($result); 

    echo "$num_rows"; 

    ?> 
+2

如果查詢成功,你會得到一個號碼。由於你沒有得到任何東西,你的查詢失敗了,返回boolean false,並且由於你完全沒有錯誤處理,並且簡單地假設什麼都不會出錯,所以你將boolean false作爲一個字符串,它是一個零長度/不可見字符串。 –

+0

正如我寫的,我有兩個用戶與項目具有相同的座右銘。所以它應該返回兩個? –

+0

不要將不推薦使用的mysql_接口函數用於新開發。使用mysqli或PDO。這段代碼將它的象徵性的小手指放在它的比喻性的嘴角上,說Dr.Evil的風格「我只是假設它會全部按計劃進行,什麼?」如果查詢遇到錯誤,MySQL將返回錯誤消息。這段代碼似乎完全忽略了MySQL可能返回錯誤的想法。 – spencer7593

回答

1

查詢應該是COUNT(*)和組由user.motto

"SELECT 
    user.motto 
    , COUNT(*) AS count 
FROM users 
LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code 
GROUP BY users.motto" 
0

本集團應users.id不users.motto:

<?php 
$result = mysql_query("SELECT users.id, COUNT(users.motto) AS count FROM users LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code GROUP BY (users.id)"); 
$num_rows = mysql_num_rows($result); 
echo $num_rows; 
?> 

注意:我看不到任何值的左連接,你不需要從cms_prosjek的任何數據,但我保留它,如果你以後會用它

0

我發現解決方案,但現在我想添加一個特定的用戶ID到查詢。由於每個管理員都有自己的歸屬區域,因此我想列出連接到特定管理員的所有用戶。每個管理員都在爲用戶創建項目。

我嘗試這樣做:

$result = mysql_query("SELECT users.motto, COUNT(*) AS count FROM users 
WHERE id = '".$_SESSION['user']['id']."' 
LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code 
GROUP BY users.motto");