【问题标题】:MySQL - More Join operators, more aliases and Error 1066MySQL - 更多连接运算符、更多别名和错误 1066
【发布时间】:2015-12-15 20:58:57
【问题描述】:

希望你能再次帮助我:)

嗯,我遇到的问题和我昨天发布的问题类似,但它被扩展了。

我们得到了三个表:

普弗莱格

车站

米塔贝特

如上所述,此问题与this 问题非常相似。

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

现在我应该另外取回住在法兰克福并在 Onkologie 站工作的工人的 ID 和姓名。

我应该怎么做?

到目前为止我的代码:

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

我不知道如何进行 2nd JOIN。

【问题讨论】:

  • 我们从哪里得到“法兰克福”我在列出的表格或示例数据中看不到它。并且从来自mitarbeiter 的符号中,join 语法无效。您不能将 ANSI 92 标准与以前的版本标准混合使用。 (在表名之间使用INNER/OUTER 连接语法或,,但不能同时使用)在哪个表中是“ORT”?我在屏幕截图中没有看到它。
  • 另外,您没有在屏幕截图中拼出表格名称。您能否更新您的问题以包含屏幕截图上方的表格名称?
  • 我更新了我的问题,包括一张新图片和表格名称。
  • @user2379123 如果其中一个或两个答案对您有帮助,请选择一个非常相似的答案来结束您的问题。谢谢

标签: mysql join operator-keyword mysql-error-1066


【解决方案1】:

你可以试试这样的

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'

【讨论】:

    【解决方案2】:

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

    注意:我们在您的基本查询中消除了 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”,但我们不知道,因为没有记录。)

    【讨论】:

    • @user2379123 根据更新的屏幕截图/表格名称更新响应。
    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多