SQL内连接和外连接

时间:2014-03-29 05:14:55

标签: sql

以下是我的查询

SELECT
    trt.barcode,
    trt.emp_id,
    et.emp_name,
    trt.port_id,
    rt.emp_id,
    et.emp_name,
    rt.port_id,
    rt.`floor`,
    trt.`floor`
FROM tbl_employee et 
INNER JOIN tbl_trns as trt 
   on et.emp_id= trt.emp_id 
left outer join tbl_reg as rt 
   on trt.barcode = rt.barcode 
inner join et 
   on rt.emp_id=et.emp_id;

此查询有什么问题?它没有给出唯一的表/别名错误。

4 个答案:

答案 0 :(得分:0)

您正在使用别名et两次。更改其中一个以使其独一无二

答案 1 :(得分:0)

您列出的第一个表格是tbl_employee,您可以为其添加别名et。您使用的最后一个表是一个名为et的表。我假设您正在尝试加入同一张桌子。你可以使用同一个表两次,但每次都需要给它一个不同的别名。或者,如果您的RDMS支持,您可以使用公用表表达式。

答案 2 :(得分:0)

错误是恰当的。请注意您的代码块:

FROM tbl_employee et 
INNER JOIN tbl_trns as trt 
   on et.emp_id= trt.emp_id 
left outer join tbl_reg as rt 
   on trt.barcode = rt.barcode 
inner join et 

看到tbl_employee被命名为et,然后上面一个块中的最后一行也是et。命名tbl_employee et1emp

答案 3 :(得分:0)

这是正确的。

SELECT
    trt.barcode,
    trt.emp_id,
    et.emp_name,
    trt.port_id,
    rt.emp_id,
    et.emp_name,
    rt.port_id,
    rt.`floor`,
    trt.`floor`
FROM tbl_employee et 
INNER JOIN tbl_trns as trt 
   on et.emp_id= trt.emp_id 
left outer join tbl_reg as rt 
   on trt.barcode = rt.barcode 
 AND rt.emp_id=et.emp_id;

了解更多信息,请点击:http://www.kanzulashya.com/oralce-join/equi-join/