「生産レポート」を作成するには、多くのテーブルを結合して、各ロットで生産された製品ラインの数量の合計と、各ラインで生産された最新の活動を調べる必要があります。
別の SQL クエリでデータを合計して MAX アクティビティを調べることができますが、それらを結合すると、クエリでエラーが表示されます。ですから、私を助けていただけませんか。どうもありがとうございました。
私のテーブルは以下です:
tbl_pdtn_startup
pdtn_st_id | pd_id | pdtn_st_date
3 | 001 | 3/9/12
4 | 002 | 4/9/12
tbl_pdtn_sizecolor
pdtn_szcl_id | pdtn_st_id | pdtn_st_color | pdtn_st_size | pdtn_st_qty_est
23 | 3 | Blue | S | 100
26 | 3 | Pink | S | 100
27 | 3 | Green | S | 100
28 | 4 | Blue | M | 200
30 | 4 | Green | M | 200
tbl_production
pdtn_id | pdtn_szcl_id | pdtn_st_id | pdtn_date | pd_making_id | lb_id
24 | 23 | 3 | 4/9/12 | 1 | 12
26 | 23 | 3 | 5/9/12 | 2 | 12
27 | 26 | 3 | 4/9/12 | 1 | 15
28 | 27 | 3 | 5/9/12 | 1 | 15 <--MAX(pdtn_date)
29 | 28 | 4 | 4/9/12 | 4 | 15
30 | 30 | 4 | 6/9/12 | 5 | 12 <--MAX(pdtn_date)
tbl_product
pd_id | Name
001 | product A
002 | product B
tbl_pdWk_process
pd_making_id | wk_stage | pd_id | cost
1 | step 1 | 001 | 12
2 | step 2 | 001 | 15
3 | step 1 | 003 | 12
4 | step 1 | 002 | 18
5 | step 2 | 002 | 10
tbl_labor
lb_id | lb_name
12 | john
15 | Mary
以下に示すような出力が必要です。
pd_id | pd_name | pdtn_st_date | sum(pdtn_st_qty_est)*|MAX(pdtn_date)**| wk_stage | lb_name
001 | product A| 3/9/12 | 300 | 5/9/12 | step 1 | Mary
002 | product B| 4/9/12 | 400 | 6/9/12 | step 2 | John
注
* Sum(pdtn_st_qty_est) は、同じ pdtn_st_id (production_startup_id) 内のすべての pdtn_st_qty_est の合計から取得されます (例:- Blue=100、Pink=100、Green=100 for pdtn_st_id = 3)
** MAX(pdtn_date) は最新の作業者が製品ロットごとに行った活動 (例: - 5/9/12 from pdtn_st_id = 3 )
以下は、3つのメインテーブルを一緒に結合しようとしたが失敗した私の試みでした..
SELECT U.pd_id, A.SumOfpdtn_st_qty_est, S.MaxOfpdtn_date
FROM (tbl_pdtn_startup AS U INNER JOIN
[SELECT Sum(tbl_pdtn_sizecolor.pdtn_st_qty_est) AS SumOfpdtn_st_qty_est FROM tbl_pdtn_sizecolor GROUP BY tbl_pdtn_sizecolor.pdtn_st_id]. AS A ON U.pdtn_st_id = A.pdtn_st_id)
INNER JOIN
[SELECT Max(tbl_production.pdtn_date) AS MaxOfpdtn_date FROM tbl_production GROUP BY tbl_production.pdtn_st_id]. AS S ON (A.pdtn_szcl_id = S.pdtn_szcl_id) AND (U.pdtn_st_id = S.pdtn_st_id)
私の次の試み:
個別のクエリを作成してそれらを結合するというアイデアを思いつきました。これにより、必要な部分データを生成できます。正しく取得できなかったデータは 2 つだけです。lb_name と wk_stage です。誰でも私を助けることができます。どうもありがとうございました。
q_maxdate
SELECT tbl_pdtn_startup.pdtn_st_id, tbl_pdtn_startup.pd_id, Max(tbl_production.pdtn_date) AS MaxOfpdtn_date, tbl_product.pd_name, tbl_pdtn_startup.pdtn_st_pdNote, tbl_pdtn_startup.pdtn_st_date
FROM (((tbl_pdtn_startup INNER JOIN tbl_pdtn_sizecolor ON tbl_pdtn_startup.pdtn_st_id=tbl_pdtn_sizecolor.pdtn_st_id) INNER JOIN tbl_production ON tbl_pdtn_sizecolor.pdtn_szcl_id=tbl_production.pdtn_szcl_id) INNER JOIN tbl_product ON tbl_pdtn_startup.pd_id=tbl_product.pd_id) INNER JOIN tbl_pdWk_process ON (tbl_production.pd_making_id=tbl_pdWk_process.pd_making_id) AND (tbl_product.pd_id=tbl_pdWk_process.pd_id)
GROUP BY tbl_pdtn_startup.pdtn_st_id, tbl_pdtn_startup.pd_id, tbl_product.pd_name, tbl_pdtn_startup.pdtn_st_pdNote, tbl_pdtn_startup.pdtn_st_date;
次に、このクエリに参加しました...
SELECT q_maxdate.pdtn_st_id, Sum(tbl_pdtn_sizecolor.pdtn_st_qty_est) AS SumOfpdtn_st_qty_est, q_maxdate.MaxOfpdtn_date, q_maxdate.pd_name, q_maxdate.pdtn_st_pdNote, q_maxdate.pd_id, q_maxdate.pdtn_st_date
FROM q_maxdate INNER JOIN tbl_pdtn_sizecolor ON q_maxdate.pdtn_st_id = tbl_pdtn_sizecolor.pdtn_st_id
GROUP BY q_maxdate.pdtn_st_id, q_maxdate.MaxOfpdtn_date, q_maxdate.pd_name, q_maxdate.pdtn_st_pdNote, q_maxdate.pd_id, q_maxdate.pdtn_st_date;