2017-09-24 13 views
-1

参考までに、PHPとMySQLを使用しています。MySQLデータとPHPとCSSのグループ化

私はスプレッドシートのスタッフのロータをよりインタラクティブなオンラインロータシステムに変換しようとしています。

私はrotaシステムのすべての機能をうまく使うことができますが、各部門内の部門と役割を明確にするためにフォーマットするときはそれほど明白ではありません。

各部門と部門内の各ロールのデータベースへの呼び出しを作成する必要はありませんが、結果をグループ化して結果を正しくグループ化する方法が分かりません。好き。

これは、私が何を起こそうとしているのか、非常にあいまいな説明である可能性があることを理解しています。私は

:-)意味をなさない願ってい

は素晴らしい一日を

MySQLのデータ

ID | Name | Dept | Role 
---|--------|------|------ 
1 | John | 1 | 2 
2 | Steve | 1 | 2 
3 | Colin | 1 | 3 
4 | Trevor | 1 | 3 
5 | Nigel | 2 | 4 
6 | Gary | 2 | 5 

欲望ページ/表形式

STAFF | .. 
-------|--- 
John | .. 
Steve | .. 
-------|--- 
Colin | .. 
Trevor | .. 
-------|--- 
TOT D1 | .. 
-------|--- 
Nigel | .. 
-------|--- 
Gary | .. 
-------|--- 
TOT D2 | .. 
+0

あなたのTOTは総数を表していますか?また、2番目の列に表示するデータは何ですか? –

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry

+0

@JashParekh TOTは本当に総カウントを表します。 2番目(およびそれ以上)の列は、その曜日とそのスタッフがその日に入っているかどうかを示します。 –

答えて

0

の場合あなたは取得したいWITH ROLLUP modifier of the GROUP BY clauseを使用することができる各従業員の値と部門別の合計は、グループ化された列の各値ごとに余分な行を追加します。あなたがその行をしたい場合は総計で最終行を除くために、あなたが持っている場合

|  Name | Salary | 
|----------|--------| 
| Colin | 80000 | 
|  John | 100000 | 
| Steve | 120000 | 
| Trevor | 40000 | 
| Total D1 | 340000 | 
|  Gary | 60000 | 
| Nigel | 50000 | 
| Total D2 | 110000 | 

HAVING条件:

select coalesce(name,concat('Total D',Dept)) as Name, sum(Salary) as Salary 
from Staff 
group by Dept, name with rollup 
having coalesce(Dept,0)!=0 

結果:あなたが給料を表示したいとすると

ビットを変更するにはCOALESCE()適切な説明を取得する:

select coalesce(name,concat('Total D',Dept),'Grand total') as Name, sum(Salary) as Salary 
from Staff 
group by Dept, name with rollup 

結果:

|  Name | Salary | 
|-------------|--------| 
|  Colin | 80000 | 
|  John | 100000 | 
|  Steve | 120000 | 
|  Trevor | 40000 | 
| Total D1 | 340000 | 
|  Gary | 60000 | 
|  Nigel | 50000 | 
| Total D2 | 110000 | 
| Grand total | 450000 | 
関連する問題