【问题标题】:query for inner join of table 4查询表4的内连接
【发布时间】:2010-04-13 06:56:09
【问题描述】:

我正面临表 4 的内连接问题 以下是给定的查询,请查看并给我解决方案

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 

【问题讨论】:

  • 说明您正在使用的数据库引擎也可能会有所帮助。从 FROM 子句中的括号来看,我的猜测是 MS Access - 但它只是一个猜测。
  • 查询执行但不显示任何值
  • 是否有 INSUREDID=427?您是否尝试过将内部联接更改为 LEFT OUTER JOINS?
  • 是的,我正在使用 MSaccess,问题是当我添加额外的组织内部连接然后查询不给我所需的数据时
  • 好吧,似乎没有一个成员与 id 427 的组织相关联。

标签: sql ms-access inner-join


【解决方案1】:

在使其更具可读性之后,似乎并没有太大的错误。我删除了括号,因为它们不需要。我也会按照正常的顺序将 INNER JOINS 反过来放置。

选择列名 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 是正确的

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

【讨论】:

  • Access 中的这些连接需要括号。
【解决方案2】:

INNER JOIN 替换为LEFT OUTER JOIN

【讨论】:

  • 如果所需的答案需要匹配,这将有何帮助?
  • @Remou - OP 只需要在 INSURED 上匹配。左连接一切可以很容易地发现哪些表的链接设置不正确。
【解决方案3】:

去掉内连接语句周围的括号。

【讨论】:

  • Access 中的这些连接需要括号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2016-10-16
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多