如何从ms-access中检索数据,其中一个字段在另一个表中并且在另一个表中的同一日期?

时间:2015-10-28 00:41:00

标签: sql ms-access ms-access-2013

大家好我是Access的新手我试图从一个依赖于另一个表的表中获取数据。所以基本上我有一个名为MUE_Values的表,它存储了2个字段(cpt_code)(mue_value)。我有另一个名为Claims的表...这个表包含大约75个字段。我的问题是 - 从索赔表中我想得到(cpt_code)(cpt_code) TABLE和MUE_Values中的(units) > (mue_value)匹配的所有字段,我也希望得到(cpt_code)与声明表中的(cpt_code)匹配的所有行,(patient_ssn)(units) > (mue_values)的日期相同,无论是否为ID patient_ssn cpt_code from_date units Field5 Field6 Field7 etc 1 098345567 12345 10/27/2015 1 2 098345567 12345 10/27/2015 1 3 098345567 09786 10/2/2015 5 4 098345567 54321 10/7/2015 3 5 098345567 87654 10/5/2015 2 6 098345567 87654 10/6/2015 3 7 789797979 65432 10/7/2015 1 8 789797979 65432 10/3/2015 2 9 789797979 76543 10/13/2015 5 10 789797979 76541 10/13/2015 1 11 789797979 12345 10/27/2015 1 12 789797979 87654 10/27/2015 0

例如: 索赔表

cpt_code    mue_value
12345   1
23456   1
34567   1
45678   1
54321   2
56789   4
65432   1
76543   3
87654   2
98765   2

MUE_values TABLE

(cpt_code)

因此,此查询仅获取具有相同日期和日期计数的患者数据> 1与SELECT Claims.patient_ssn, Claims.from_date, Count(Claims.from_date) AS CountOffrom_date FROM Claims INNER JOIN MUE_values ON Claims.cpt_code = MUE_values.cpt_code WHERE (((Claims.cpt_code)=[MUE_values].[cpt_code])) GROUP BY Claims.patient_ssn, Claims.from_date, MUE_values.cpt_code HAVING (((Count(Claims.[from_date]))>1)) WHERE (((Claims.units)>[mue_value])); 相同。

SELECT Claims.*
FROM Claims
WHERE EXISTS(SELECT * 
          FROM MUE_values
          WHERE Claims.cpt_code = MUE_values.cpt_code AND
                Claims.units > MUE_values.[mue_value]
         ) OR
 EXISTS (SELECT Claims.patient_ssn, Claims.from_date,     Count(Claims.from_date) AS CountOffrom_date
FROM Claims INNER JOIN MUE_values ON Claims.cpt_code = MUE_values.cpt_code
WHERE (((Claims.cpt_code)=[MUE_values].[cpt_code]))
GROUP BY Claims.patient_ssn, Claims.from_date, MUE_values.cpt_code
HAVING (((Count(Claims.[from_date]))>1)));

但是当我把它放在一个查询中时,它会返回所有具有相同from_date的行,而不仅仅是上面查询中的那一行以及来自第一个子查询的其他四行

ID  patient_ssn cpt_code from_date  units   Field5  Field6  Field7 etc...
1   098345567   12345   10/27/2015    1                                     
2   098345567   12345   10/27/2015    1                                     
4   098345567   54321   10/7/2015     3                                     
6   098345567   87654   10/6/2015     3                                     
8   789797979   65432   10/3/2015     2                                     
9   789797979   76543   10/13/2015    5     

这应该是结果:

ID  patient_ssn cpt_code from_date  units   Field5  Field6  Field7 etc...
1   098345567   12345   10/27/2015    1                                     
2   098345567   12345   10/27/2015    1                                     
3   098345567   09786   10/2/2015     5                                     
4   098345567   54321   10/7/2015     3                                     
5   098345567   87654   10/5/2015     2                                     
6   098345567   87654   10/6/2015     3                                     
7   789797979   65432   10/7/2015     1                                     
8   789797979   65432   10/3/2015     2                                     
9   789797979   76543   10/13/2015    5                                     
10  789797979   76541   10/13/2015    1 
11  789797979   12345   10/27/2015    1                                     
12  789797979   87654   10/27/2015    0             

相反,我得到了这个结果:

def sumList(l):
    if l == []:
        return 0
    else:
        return sumList(l[1:]) + l[0]
def main():
    l=[3,2,5,3]
    print(sumList(l))

main()

1 个答案:

答案 0 :(得分:0)

当我阅读您的要求时,听起来像EXISTS

SELECT Claims.*
FROM Claims
WHERE EXISTS (SELECT 1 
              FROM MUE_values
              WHERE Claims.cpt_code = MUE_values.cpt_code AND
                    Claims.units > MUE_values.[mue_value]
             ) OR
      EXISTS (SELECT 1
              FROM MUE_values
              WHERE Claims.cpt_code = MUE_values.cpt_code AND
                    Claims.patent_ssn = MUE_values.patient_ssn
             );

然而,我不知道"同一日期"意思是,因为一张桌子肯定没有日期。