2つのテーブルから派生したリストを生成しようとしています。最終的な結果は次のようになります。where句とサブクエリに基づくデータのリストからヘッダを派生させる方法
Date A OHS OMSN OMSS
date1 1 1 2 3
date2 4 5 6 7
date... .. .. .. ..
日付の範囲は、私が生成さcalendareテーブルのオフに生成され、右の他の建物のためにカウントされていない各建物の下には0であってもそうそれらが含まれて接合されています毎日の作業記録を数えるだけの数です。このクエリは私に特定の範囲のそれぞれの日のためのすべての場所の合計workordersを与える
Select calendar.datefield As 'Date',
Count(FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d')) As 'Count'
From workorders Right Join
calendar On (FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') =
calendar.datefield)
Where calendar.datefield Between '2011-08-30' And date_format(now(), '%Y-%m-%d')
Group By calendar.datefield
:ここで私がこれまで持っているクエリがあります。これを含めても問題ありませんが、それぞれの特定のloctionでフィルタリングされた3つのカラムが必要です。私はこのような建物名追加する場合:
Select calendar.datefield As 'Date', workorders.location,
Count(FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d')) As 'Count'
From workorders Right Join
calendar On (FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') =
calendar.datefield)
Where calendar.datefield Between '2011-08-30' And date_format(now(), '%Y-%m-%d')
Group By calendar.datefield, workorders.location
を次に表には、私が必要とするデータではなく、私が探しています列を与えます。
2011-09-08 OHS 27
2011-09-09 OHS 24
2011-09-10 NULL 0
2011-09-11 NULL 0
2011-09-12 OHS 23
2011-09-13 OHS 18
2011-09-13 OMS-N 1
2011-09-14 OHS 20
私は、日付を選択して、このクエリから、それはOHSで、その後の数字、それはOMSNで、その後の数字、それはOMSSで、その後の数字を引くしたい:データはこのsomethine嘘になります
これを行うにはもっと簡単な方法が必要で、私は文字通りこのクエリをまとめようと努力しました。
誰かが助けてくれることを願っています。私は過去数ヶ月にわたり、その場でmysqlを学びました。そしてどんな助けも大歓迎です。
_ _ さらにレビュー:
SELECT calendar.datefield, tOHS.Count AS 'OHS'
FROM calendar
LEFT JOIN (
SELTCT workorders.school, Count(workorders.dateSubmitted) AS 'Count', FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') AS test
FROM workorders
RIGHT JOIN calendar ON (FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') = calendar.datefield)
WHERE calendar.datefield
BETWEEN '2011-08-30'
AND date_format(now() , '%Y-%m-%d')
AND School = 'OHS'
GROUP BY calendar.datefield, workorders.school
)tOHS ON calendar.datefield = tOHS.test
WHERE calendar.datefield
BETWEEN '2011-08-30'
AND date_format(now() , '%Y-%m-%d')
これは、日付と最初の場所OHSの毎日の数を返します。いつ私がこれを試してみますか:
select calendar.datefield, tOHS.Count as 'OHS'
from calendar
LEFT JOIN
(
Select workorders.school, Count(workorders.dateSubmitted) As 'Count', FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') as test
From workorders Right Join
calendar On (FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') =
calendar.datefield)
Where calendar.datefield Between '2011-08-30' And date_format(now(), '%Y-%m-%d') AND School = 'OHS'
Group By calendar.datefield,workorders.school
) tOHS
on calendar.datefield = tOHS.test
LEFT JOIN
(
Select workorders.school, Count(workorders.dateSubmitted) As 'Count', FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') as test
From workorders Right Join
calendar On (FROM_UNIXTIME(workorders.dateSubmitted, '%Y-%m-%d') =
calendar.datefield)
Where calendar.datefield Between '2011-08-30' And date_format(now(), '%Y-%m-%d') AND School = 'OMS-S'
Group By calendar.datefield,workorders.school
) tOMSS
on calendar.datefield = tOHS.test
WHERE calendar.datefield Between '2011-08-30' And date_format(now(), '%Y-%m-%d')
これはすべて一緒にクエリを壊します。同じ日付が表示され、すべての列に対して同じ値が繰り返されます。間違った参加をしていますか?
:-)いつか誰かに役立ちます願っています。問題は、私が2度目の参加をして、それが王立的にクエリを駄目にすることです。 - 質問の末尾に追加 – Bil1