2

以下に示すように、3つのテーブルがあります

table 1
________________________________________________
id | effective_date     | table_3_id | acc_name |
___|____________________|____________|__________|
112|2012-02-01 12:00:00 |     23     | Over Pay |
___|____________________|____________|__________|

table 2
__________________________________
id    | table_1_id     | amount  |
______|________________|_________|
 1    |    112         |  400.00 |
______|________________|_________|

table 3
________________________________________
id  | emp_num  | first_name  | last_name|
____|__________|_____________|__________|
 23 |   100004 |   John      |    Doe   |  
____|__________|_____________|__________|

開始日と終了日、および acc_name の定義済みの値があります。私がやりたいことは、emp_num、first_name、last_name、および amount を、開始日と終了日の間に入る effective_date を持つ関連テーブルから取得することです。また、acc_name は事前定義された値である必要があります。

上記の表で、開始日 = 2012-01-30 12:00:00 、終了日 = 2012-03-01 12:00:00 、および acc_name = 過払いの場合。次に、以下の値が返されます。

emp_num = 100004  
first_name = John  
last_name = Doe  
amount = 400.00

これどうやってするの?ここでは、3 つのテーブルすべてを結合することが最善の方法であるかどうかはわかりません。誰でも助けることができますか?

4

2 に答える 2

2

はい。結合を使用します。

select emp_num, first_name, last_name, amount
from 
    table1 
       inner join table2 on table1.id = table2.table_1_id
       inner join table3 on table1.table_3_id = table3.id
where
    effective_date between '2012-01-30 12:00:00' and '2012-03-01 12:00'
and 
    acc_name = 'Over Pay'

2月30日はありません。

于 2012-09-03T09:21:38.777 に答える
0

ここで、これを試してください:

SELECT  a.emp_num,
        a.first_name,
        a.last_name,
        c.amount
FROM    table3 a
            INNER JOIN table1 b
                on a.id = b.table_3_id
            INNER JOIN table2 c
                on b.id = c.id
WHERE   b.effective_date BETWEEN '2012-01-30 12:00:00' AND '2012-02-29 12:00:00' 
        AND
        b.acc_name = 'Over pay'
于 2012-09-03T09:22:27.543 に答える