查询表4的内连接

时间:2010-04-13 06:56:09

标签: sql ms-access inner-join

我正面临着表4内部联接的问题 以下是给出的查询plz见&给我解决方案

select INSURED.FNAME + ' ' + INSURED.LNAME AS MNAME
,INSURED.MEMBCODE as MEMBERCODE
,INSURED.POLICYNO AS POLICYNO
,INSURED.POLICYFRMDATE AS POLICYFROMDATE
,INSURED.POLICYTODATE AS POLICYTODATE
, MEMBERSHIP.MRKEXTNAME AS MARKETINGEXECUTIVE
,MEMBERSHIP.EMPLOYEECOUNT AS EMPLOYEECOUNT
,INSURED.CLAIMID AS CLAIMID
,POLICY.POLICYTYPE
,POLICY.COVAMTHOSPITAL as SUMINSURED
,ORGANIZATION.ORGANIZATIONNAME  
from ((INSURED 
inner join MEMBERSHIP on MEMBERSHIP.MEMBERSHIPID=INSURED.MEMBERSHIPID) 
inner join POLICY on MEMBERSHIP.POLICYNAME=POLICY.POLICYNAME) 
inner join ORGANIZATION on ORGANIZATION.ORGANIZATIONID=MEMBERSHIP.ORGANIZATIONID 
WHERE INSUREDID=427 

3 个答案:

答案 0 :(得分:0)

在使其更具可读性后,似乎没有太大的错误。我删除了括号,因为它们不需要。我也会把INNER JOINS按照正常的方式放在另一个方向,按顺序排列。

SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name = table_name2.column_name

所以看起来应该像

select INSURED.FNAME + ' ' + INSURED.LNAME AS MNAME,
INSURED.MEMBCODE as MEMBERCODE,
INSURED.POLICYNO AS POLICYNO,
INSURED.POLICYFRMDATE AS POLICYFROMDATE,
INSURED.POLICYTODATE AS POLICYTODATE,
MEMBERSHIP.MRKEXTNAME AS MARKETINGEXECUTIVE,
MEMBERSHIP.EMPLOYEECOUNT AS EMPLOYEECOUNT,
INSURED.CLAIMID AS CLAIMID,
POLICY.POLICYTYPE,
POLICY.COVAMTHOSPITAL as SUMINSURED,
ORGANIZATION.ORGANIZATIONNAME
FROM INSURED
INNER JOIN MEMBERSHIP on INSURED.MEMBERSHIPID=MEMBERSHIP.MEMBERSHIPID
INNER JOIN POLICY on POLICY.POLICYNAME=MEMBERSHIP.POLICYNAME
INNER JOIN ORGANIZATION on MEMBERSHIP.ORGANIZATIONID=ORGANIZATION.ORGANIZATIONID
WHERE INSUREDID=427

您需要告诉我们问题所在。它是否返回与您期望的结果不同的结果,或者是否因错误而失败。

您还应该告诉我们您正在使用哪个数据库。

你的桌面结构似乎也有些奇怪。您通常不会将PolicyName存储在您的成员资格表中,而应该使用某种类型的ID字段进行链接,而不是使用PolicyName字符串...类似于

关于POLICY.POLICYID = MEMBERSHIP.POLICYID的内部联合政策

你使用OrganizationID和MEMBERSHIPID

是对的

简而言之,您需要告诉我们更多相关信息。

答案 1 :(得分:0)

INNER JOIN替换为LEFT OUTER JOIN

答案 2 :(得分:-1)

删除内部联接语句的括号。