-2

希望你能再次帮助我:)

好吧,我遇到的问题与我昨天发布的问题相似,但它已扩展。

我们得到了三个表:

表:pfleger 普弗莱格

表:车站 车站

表:米塔贝特 米塔贝特

如上所述,这个问题与这个问题非常相似。

结果如何?好吧,我拿回了一张桌子,上面有住在法兰克福的工人的身份证和姓名。

现在我还应该取回住在法兰克福并在 Onkologie 站工作的工人的身份证和姓名。

我该怎么做?

到目前为止我的代码:

SELECT pfleger.PNR, Name
from mitarbeiter, ...
JOIN pfleger on (mitarbeiter.PNR=pfleger.PNR)
JOIN ...
where Ort='Frankfurt' and Name='Onkologie'

我不知道如何进行第二次加入。

4

2 回答 2

0

根据为表提供的表名和列名进行更新。

注意:我们,在您的基本查询中删除了 mitarbeiter 之后的符号。

我在 mitabeiter 中没有看到 PNR,所以我假设 stationID 是他们加入的方式。

SELECT * 
FROM pfleger P
INNER JOIN Station S
 on S.StationId = P.StationID
INNER JOIN mitarbeiter M
 on M.pnr = S.pnr
WHERE M.ORT='Frankfurt' and P.name = 'Onkologie'

我做出的假设:pfleger.stationID 与 station.stationID 有外键关系 mitarbeiter.PNR 与 station.PNR 有外键关系

我们在这里使用了内部连接,因为我们只希望 Mitarbeiter 存在于所有 3 个表中。否则我们可以使用外连接并返回那些没有记录的人。(意思是不知道他们在哪里工作,可能是“Onkologie”,但我们不知道,因为没有记录。)

于 2015-12-15T21:14:39.213 回答
0

你可以试试这样的

select m.PNR, m.Name
from Mitarbeiter m
inner join Station s on s.PNR = m.PNR
inner join Pfleger p on p.StationID = s.StationID
where
  m.Ort = 'Frankfurt'
  and p.Name = 'Onkologie'
于 2015-12-15T21:15:59.630 回答