1

ステートメントAとステートメントBがあります。

ステートメントAは5レコードを返し、ステートメントBは1レコードを返します。

ステートメントA

    SELECT DISTINCT    
    Outlet.cCode,
    Employee.cEmployeeNumber,
    FROM  Outlet 
    INNER JOIN Employee ON EmployeeOutlet.iEmployee = Employee.iID 
    WHERE cCOde = 123

ステートメントB

 Select OutletCode, RSMcode, ASMcode, FMcode from Employee_Hierarchy
 Where OutletCode = 123

これで、ステートメントAのレコードのうち3つだけが、Employee.cEmployeeNumberがRSMcode、ASMcode、またはFMcodeのいずれかと等しい場合に返される必要があります。

次のJOINを追加すると、1つのレコードが返されるだけですが、まだ必要な他の2つのレコードに対応するにはどうすればよいですか?

 SELECT DISTINCT    
        Outlet.cCode,
        Employee.cEmployeeNumber,
        FROM  Outlet 
        INNER JOIN Employee ON EmployeeOutlet.iEmployee = Employee.iID 
        INNER JOIN Employee_Hierarchy as EH ON EH.RSMcode = Employee.cEmployeeNumber and EH.OutletCode = Outlet.cCode
        WHERE Outlet.cCode = 123

RSMcodeとASMcodeおよびFMcodeごとにJOINを追加すると、何も返されません。

4

3 に答える 3

1

どう?

SELECT DISTINCT    
    Outlet.cCode,
    Employee.cEmployeeNumber,
    FROM  Outlet 
    INNER JOIN Employee ON EmployeeOutlet.iEmployee = Employee.iID 
    INNER JOIN Employee_Hierarchy as EH ON EH.OutletCode = Outlet.cCode AND (EH.RSMcode = Employee.cEmployeeNumber OR EH.ASMcode = Employee.cEmployeeNumber OR EH.FMcode = Employee.cEmployeeNumber)
WHERE Outlet.cCode = 123
于 2012-11-23T09:19:28.097 に答える
0

ただの推測

SELECT DISTINCT    
        Outlet.cCode,
        Employee.cEmployeeNumber,
        FROM  Outlet 
        INNER JOIN Employee ON EmployeeOutlet.iEmployee = Employee.iID 
        INNER JOIN Employee_Hierarchy as EH ON EH.RSMcode = Employee.cEmployeeNumber and EH.OutletCode = Outlet.cCode
        and EH.OutletCode = 123
于 2012-11-23T08:43:22.663 に答える
0
INNER JOIN Employee_Hierarchy as EH ON EH.RSMcode = Employee.cEmployeeNumber and outletCode = Outlet.cCode

このコードを次のように変更します

INNER JOIN Employee_Hierarchy as EH ON EH.OutletCode = Outlet.cCode 
WHERE 
Employee.cEmployeeNumber=EH.RSMcode OR 
Employee.cEmployeeNumber=EH.ASMcode OR
Employee.cEmployeeNumber=EH.FMcode 
于 2012-11-23T08:51:54.163 に答える