我有2个表employeeAccount和employeeInfo。我不允许修改表格。使用Sybase数据库。
employeeAccount
=============================
employeeID parentID
S1 P1
S2 P1
S3 P1
S4 P1
S5 P1
S6 P3
S6 P4
S7 P4
S8 P4
Second table: employeeInfo
==============================
employeeID Group Status
S1 0
S2 0 OPEN
S3 0
S4 1
S5 1
S6 0
S7 0
S8 1
我想选择一个状态为开放的员工以及所有拥有相同组的兄弟姐妹。
示例 - S2状态打开,S2兄弟姐妹是S1,S3,S4,S5。我只想要S1,S2和S3的数据,因为所有数据都来自同一组No 0并且具有相同的ParentID P1。
在我的方法中,我首先找到了员工的OPEN状态,然后找到了所有的兄弟姐妹。然后我选择唯一拥有相同组的兄弟姐妹。
select DISTINCT emp.employeeID, emp.parentID from employeeAccount emp
JOIN (
SELECT DISTINCT e.employeeID, e.parentID, info.Group FROM employeeAccount e, employeeInfo info
WHERE e.employeeID = info.employeeID
AND info.status = 'OPEN'
) Details
ON Details.parentID = emp.parentID
WHERE Details.Group = (SELECT Group from employeeInfo where employeeID = emp.employeeID)
通过此查询,我获取了S2和他的父P1,因为S2状态为OPEN,然后我获取父P1下的所有员工,然后我选择S1,S2和S3,因为他们来自同一组0。
如果我的方法有误或者有更好的方法,请告诉我。
答案 0 :(得分:0)
您可以尝试: -
SELECT E.employeeID, P.parentID
FROM EmpInfomartion E, EmpAccount P
WHERE Group IN (SELECT Group
FROM EmpInfomartion
WHERE Status = 'Open')
AND E.employeeID = P.employeeID;