简单的SQL问题,消除常见属性的歧义

时间:2011-09-01 22:08:41

标签: sql

我有一个包含表Person的数据库,其中包含属性IDNameAge。我还有一个表WorksFor,其中包含ID1ID2属性,其中ID1 适用于 ID2

我想列出所有为比他们年轻至少2岁的人工作的人的姓名。我该怎么做?

2 个答案:

答案 0 :(得分:5)

假设ID1 WorksFor ID2 ...

SELECT DISTINCT
   CubeRat.ID,
   CubeRat.Name,
   CubeRat.Age
FROM
   WorksFor W
   INNER JOIN PERSON Boss ON W.ID2 = Boss.ID
   INNER JOIN PERSON CubeRat ON W.ID1 = CubeRat.ID
WHERE
   CubeRat.Age >= (Boss.Age + 2)

答案 1 :(得分:-1)

假设id1和id2是一个表中的字段,其中id1 - manager的id,id2 - worker id

SELECT p.name 
FROM Person p
WHERE p.age > ((PRIOR p.age) - 2)
START WITH p.id2 = *sombody's id*
CONNECT BY p.id1 = PRIOR p.id2

Oracle表示法