1

私は4つのテーブルを持っています。

Procedures

Name   Cost
Proc1  10
Proc2  20
Proc3  30
Proc4  40

MaterialsUsed

NameOfTheProcedure  MaterialUsed  AmountOfMaterialUsed
proc1               mat1              1
proc2               mat2              3
proc3               mat3              2
proc4               mat4              1

Materials

Name   Id   Price
mat1   1    10
mat2   2    20
mat3   3    30
mat4   4    40

ProceduresDone

ClientID   NameOfProcedure  Date
Client1    proc1            2012-11-24
Client2    proc2            2012-11-23
Client3    proc3            2012-11-24
Client4    proc4            2012-11-23

特定の日に行われた手順を返すクエリを作成する必要があります。3 つの列 (NameOfTheProcedure、HowManyTimesThatProcedureWasDoneInThatDay、TotalPrice) が必要です。TotalPrice 列には、材料テーブルと手順 1 の両方の価格が含まれています。

単一のクエリでそれを行うことは可能ですか?

編集:

サンプル結果は次のようになります (日付 2012-11-24):

NameOfTheProcedure    AmountOfTimesProcedureWasDoneThatDay    TotalPrice
proc1                 1                                       20
proc3                 1                                       90
4

1 に答える 1

1

このようなことを試して、

SELECT  a.NameOfTheProcedure,
        COUNT(a.NameOfTheProcedure) AmountOfTimesProcedureWasDoneThatDay,
        SUM(b.AmountOfMaterialUsed * d.Price) +
        SUM(c.Cost) TotalPrice
FROM    ProceduresDone a
        INNER JOIN MaterialsUsed b
            ON a.NameOfProcedure = b.NameOfTheProcedure
        INNER JOIN Procedures c
            ON c.Name = a.NameOfProcedure
        INNER JOIN Materials d
            ON b.MaterialUsed = d.Name
WHERE   a.Date = '2012-11-24'
于 2012-11-25T13:48:11.667 に答える