我有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 = Over Pay;然后应返回以下值。
emp_num = 100004
first_name = John
last_name = Doe
amount = 400.00
我该怎么做?我不确定是否加入所有3个表是最好的方法。有人可以帮忙吗?
答案 0 :(得分: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日没有。
答案 1 :(得分: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'