在表1中,经理ID和出纳员ID可用,在另一个表2中,出纳员ID和经理ID在一列中可用,并且其名称在另一列中。
如何在一个查询中单独获取名称和ID?
Table 1
----------------
Column1 : Manager ID
Column2 : Cashier ID
Table 2
-----------------
Column1 : Employee ID (it contains both manager and cashier ID)
Column2 : Employee Names (it contains both manager and cashier Name)
预期结果:
Column1: Manager ID
Column2: Manager Name
Column3: Cashier ID
Column4: Cashier Name
我如何得到这个结果?
答案 0 :(得分:0)
对于ID,如果它们是固定长度,您可以使用Substr函数 - http://www.techonthenet.com/oracle/functions/instr.php。
对于名称,如果它们以逗号或分号等分隔,则可以使用Instr函数 - http://www.techonthenet.com/oracle/functions/instr.php
答案 1 :(得分:0)
如果我理解您的问题,那么两位经理(由manager_id
中的TABLE1
标识)和收银员(cashier_id
中TABLE1
标识)都是员工< / em>(由employee_id
中的TABLE2
标识) - 也就是说employee_ID
的一个值包含manager_ID
和cashier_ID
的值的情况并非如此SELECT t1.manager_id, t2a.employee_name AS manager_name
, t1.cashier_id, t2b.employee_name AS cashier_name
FROM table1 t1 INNER JOIN table2 t2a
ON t1.manager_id = t2a.employee_id
INNER JOIN table2 t2b
ON t1.cashier_id = t2b.employee_id;
。考虑到这一假设,您应该能够执行以下操作:
TABLE2
请注意,我上面所做的是加入LEFT JOIN
两次但使用不同的别名。现在,如果有员工是收银员但谁没有经理,那么您将要使用INNER JOIN
代替第一个LEFT JOIN
。如果您有想要退回的经理,但没有收银员工作的收银员,那么您希望使用INNER JOIN
代替 second { {1}}。