SQL Server中的多个INNER JOINS导致重复的行

时间:2013-12-27 16:02:53

标签: sql sql-server inner-join

我需要生成有帐户和分区的员工报告。

SELECT DISTINCT
    empleado_cuenta.emp_id,
    cuenta.cue_id,
    cuenta.cue_nombre,
    empleado_cuenta.car_id,
    empleado_cuenta.sar_id
FROM empleado_cuenta
INNER JOIN cuenta
    ON empleado_cuenta.cue_id = cuenta.cue_id 
INNER JOIN subarea 
    ON cuenta.cue_id = subarea.cue_id
WHERE emp_id = 5938 AND car_id IN (147,5,6,7,41,14)

我得到了这个结果......

enter image description here

在查询中添加subarea.sar_nombre时:

SELECT DISTINCT
    empleado_cuenta.emp_id,
    cuenta.cue_id,
    cuenta.cue_nombre,
    empleado_cuenta.car_id,
    empleado_cuenta.sar_id,
    subarea.sar_nombre
FROM empleado_cuenta
INNER JOIN cuenta
    ON empleado_cuenta.cue_id = cuenta.cue_id 
INNER JOIN subarea ON cuenta.cue_id = subarea.cue_id
WHERE emp_id = 5938 AND car_id IN (147,5,6,7,41,14)

然后我得到了结果:

enter image description here

我只需知道名称与sar_id对应。

1 个答案:

答案 0 :(得分:0)

DISTINCT适用于整行,因此当您自然添加列时​​,您会有更多行与相应行的不同值对应。很容易看到,您之前的2行乘以sar_nombre

中的8个不同值