2011-06-27 3 views
3

私はバグを追跡するためのデータベース設定、誰が誰を追跡するためのプロファイルテーブル、およびすべてのバグに関する情報を含むバグテーブルを持っています。私は各テーブルに興味がある分野は、以下のとおりです。複数のユーザー入力パラメータの行数を返すMYSQLクエリ

プロファイルテーブル:

userid | realname 
--------------- 
1  | Bob 
2  | Alice 
4  | Carol 
... 

バグテーブル:

id | reporter | short_desc 
----------------------------- 
1 | 1  | short description 1 
2 | 2  | short description 2 
3 | 1  | short description 3 
4 | 3  | another short description 

profiles.userid = bugs.reporter、およびbugs.idがあります特定のバグのID

PHPで自動作成されたレポート作成者は、最終的にJoomlaのPlotalotになります。つまり、1つのクエリでなければなりません。自動化レポートのユーザーは、レポートに表示するユーザーのユーザーIDを指定できます。すなわち:

enter IDS: 1,4 

reporter | bugs 
-------------- 
Bob  | 2 
Carol | 1 

データベースには5,000を超えるバグと400人のアクティブな貢献者があります。それぞれのレポーターに対してunion selectを使用せずにそのようにフォーマットされた結果を返すクエリを構築する方法はありますか?

多くのおかげ

+0

を、あなたは(COUNTの話)と左が参加していますか?私はUNIONがこれと何をしなければならないのか理解できません。 –

+0

UNION SELECTは、PHPのforループのすべてのidに基づいてクエリを構築することを許可しています。 SELECT実名、COUNT(*)FROMプロファイルINNER JOINのバグON profiles.userid = bugs.reporter where reporter = 1 UNION SELECT ....どこの記者= 4; – Robert

答えて

1

は、これはトリック行う可能性があります:

select u.realname as Reporter, count(b.id) as Bugs 
from profiles u INNER JOIN bugs b ON u.userid = b.reporter 
where u.userid IN (1,4) 
GROUP BY u.userid, u.realname 
0
select realname as reporter, count(*) as bugs 
from profiles p join bugs b on p.userid = b.reporter 
group by realname 
0
SELECT 
    u.realname as reporter 
    Count(b.id) as bugs 
FROM bugs b 
INNER JOIN profiles u on u.userid = b.reporter 
WHERE u.userid in (1,4) 
0
SELECT pr.realname, count(b.id) 
FROM profiles pr LEFT JOIN bugs b ON pr.userid = b.reporter 
GROUP BY pr.userid, pr.realname 
WHERE pr.userid in (1,4) -- set your user ids here where report needs to be generated dynamically etc. 
関連する問題