2016-09-28 17 views
0

私は自分のadminpanelのためにいくつかの統計を出したいと思っています。 私はusersとcms_prosjektという名前の2つのテーブルを持っています。私はどのくらい多くのプロジェクト ユーザーと同じ属性を持っているカウントしたいと思います。LEFT JOIN MySQLとPHP

各ユーザーには、プロジェクトに関連したモットーがあります。 例:モットーは精神であり、プロジェクトコードは精神です。何も返されません。私は、プロジェクトのコードと同じモットーを持つ2人のユーザーを持っています。

<?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; 
?> 

注:クエリがでuser.motto

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

は、私はこれを試してみました。あなたは何も得られないので、あなたのクエリは失敗し、真偽値が返されます。エラー処理は全くなく、何も間違っていると単純に仮定しているので、その長さはゼロの文字列/文字列ではありません。 –

+0

私が書いたように、プロジェクトと同じモットーを持つ2人のユーザーがいます。だから2つ返す必要がありますか? –

+0

新しい開発に非推奨のmysql_インターフェイス関数を使用しないでください。 mysqliまたはPDOを使用してください。このコードは、それが比喩的な口の隅に比喩的な小指の指を置いて、エビルのスタイル "私はそれがすべて計画に行くと思います。クエリでエラーが発生すると、MySQLはエラーメッセージを返します。このコードは、MySQLがエラーを返すかもしれないという考えを完全に無視しているようです。 – spencer7593

答えて

1

はないusers.motto users.idする必要があります。左結合の値は見えませんが、cms_prosjekのデータは必要ありませんが、後で使用する場合はそのまま使用します。

0

することにより、グループ数(*)とグループである必要があり

<?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"; 

    ?> 
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");