【问题标题】:Join operators and commutativity加入运算符和交换性
【发布时间】:2013-11-17 15:10:53
【问题描述】:

我正在做一些关系代数练习。在一张教师幻灯片上,我看到了一件让我认为可能存在错误的事情。 我想,第三个JOIN,应该是

JOIN 'Farmacia' as F
ON 'D'.'idCF' = 'F'.'idFì

而不是

JOIN 'Farmacia' as F
ON 'F'.'idFì = 'D'.'idCF'

使用最后一条命令,您将自行加入 Farmacia,不是吗?

幻灯片问题说:

哪家药店有卖药公司Y的药X?

【问题讨论】:

  • 命令正确。语句的 ON 部分中的列顺序不会影响 JOIN 本身的完成方式。
  • 填写一个答案,这样你就可以得到绿色标记

标签: sql relational-algebra


【解决方案1】:

语句的 ON 部分中的列顺序不影响 JOIN 本身的完成方式。

这个:

SELECT t1.columnA, t2.columnB
FROM Table1 t1
   JOIN Table2 t2 ON t1.ID = t2.ID

将产生与此相同的结果:

SELECT t1.columnA, t2.columnB
FROM Table1 t1
   JOIN Table2 t2 ON t2.ID = t1.ID

您描述的自联接应该是这样的:

SELECT t1.columnA, t2.columnB
FROM Table1 t1
   JOIN Table1 t2 ON t1.managerID = t2.employeeID

【讨论】:

  • 对不起,还有一个问题:连接的顺序呢?
  • 你的意思是JOINS中表的顺序吗?在编写查询时,您通常会按照它们相互关联的顺序添加表。如果您有一系列相关表,我相信以正确的顺序使用该链是一种很好的做法。如果您正在编写的 JOIN 依赖于尚未引用的表,则某些查询工具可能会引发错误。但是,当您实际运行查询时,我想引擎会解决所有问题。
猜你喜欢
  • 1970-01-01
  • 2017-06-23
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 2011-01-15
  • 2012-10-23
相关资源
最近更新 更多