запрос для внутреннего объединения таблицы 4 - PullRequest
0 голосов
/ 13 апреля 2010

Я сталкиваюсь с проблемой внутреннего соединения таблицы 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 

Ответы [ 3 ]

0 голосов
/ 13 апреля 2010

После того, как он стал немного читабельнее, похоже, что он не так уж и плох. Я снял скобки, так как они не нужны. Я бы также поставил ВНУТРЕННИЕ СОЕДИНЕНИЯ наоборот, как обычно, чтобы расположить их в этом порядке.

ВЫБЕРИТЕ имя столбца (ов) 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 в своей таблице членства, а должны связываться с какими-то полями идентификаторов, а не со строкой PolicyName ... Что-то вроде

ВНУТРЕННЯЯ СОЕДИНЕННАЯ ПОЛИТИКА в отношении POLICY.POLICYID = MEMBERSHIP.POLICYID

Вы правильно поняли с OrganizationID и MEMBERSHIPID

Короче говоря, вы должны рассказать нам больше об этом.

0 голосов
/ 13 апреля 2010

Заменить INNER JOIN на LEFT OUTER JOIN.

0 голосов
/ 13 апреля 2010

Избавьтесь от скобок вокруг ваших внутренних операторов соединения.

...