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,这些表的有效日期在开始日期和结束日期之间,而且acc_name 应该是预定义的值。

对于上述表格,如果我的开始日期 = 2012-01-30 12:00:00 ,结束日期 = 2012-03-01 12:00:00 并且 acc_name = Over Pay;然后应该返回以下值。

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 回答