- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,好吧,我有几张 table 。我当前的查询针对“历史”表运行。我想要进行某种连接以从当前表中获取最新状态。这些表共享一个类似的列,称为“ID”
结构如下
ddCurrent
-ID
-Location
-Status
-Time
ddHistorical
-CID (AI field to keep multiple records per site)
-ID
-Location
-Status
-Time
我现在的目标是进行一个简单的连接,以获取 ddHistorical 中的所有变量和 ddCurrent 中的当前状态。
我知道它们可以在 ID 上连接,因为它们的 ID 表中都有相同的项目,我只是不知道哪种连接是合适的或者为什么?
最佳答案
我确信有人可能会提供一个具体的链接来详细解释,但我会尝试以这种方式进行总结。在编写查询时,我尝试从要从中获取数据的表的位置列出表,并将其作为“FROM”子句中的第一个表。然后,根据关系(例如 ID)对其他表执行“JOIN”条件。在你的例子中
FROM
ddHistorical ddH
INNER JOIN ddCurrent ddC
on ddH.ID = ddC.ID
在这种情况下,INNER JOIN(与 JOIN 相同)ddHistorical 表是左表(为了样式一致性和缩进而首先列出),ddCurrent 是右表。请注意,我将它们连接在一起的 ON 标准也是 left alias.column = right alias table.column ——同样,这只是为了心理关联的目的。
内连接(或 JOIN)意味着记录的每一侧都必须有匹配项,否则将被丢弃。
左连接意味着给我左表(本例中为 ddHistorical)中的所有记录,无论右表(ddCurrent)中是否匹配。在此示例中不实用。
右连接是相反的...给我右侧表中的所有记录,无论左侧表中是否有匹配的记录。大多数时候,您会看到 LEFT-JOIN 比 RIGHT-JOIN 更频繁。
现在,这是一个在头脑中获得左连接的示例。您在一家汽车经销商工作,有一个包含 10 辆已售汽车的主表。对于给定的月份,您想知道哪些产品卖不出去。因此,从所有汽车的主表开始,查看销售表以了解实际销售的产品。如果没有此类销售事件,右侧表将具有 NULL 值
select
M.CarID,
M.CarModel
from
MasterCarsList M
LEFT JOIN CarSales CS
on M.CarID = CS.CarID
AND month( CS.DateSold ) = 4
where
CS.CarID IS NULL
因此,我的 LEFT 加入基于匹配的汽车 ID -- 并且 -- 销售事件月份是 4(4 月),因为我可能不关心 1-3 月的销售 -- 但也符合资格年份,但这是一个简单的示例。
如果 Car Sales 表中没有记录,则所有列都将为 NULL 值。我只是碰巧关心汽车 ID 列,因为那是连接基础。这就是为什么我将其包含在 WHERE 子句中。对于所有其他类型的确实有销售的汽车来说,它都会有值(value)。
这是一种常见的方法,您会在查询中看到有人在不考虑其他情况下查找所有内容...有些人使用 where NOT EXIST ( subselect ),但这些方法执行速度较慢,因为它们对每条记录进行测试。进行连接要快得多。
其他示例可能是您想要公司所有员工的列表,并且他们是否有一些认证/培训来显示它...您仍然想要所有员工,但左连接到某些认证/培训表会暴露根据需要添加这些额外字段。
select
Emp.FullName,
Cert.DateCertified
FROM
Employees Emp
Left Join Certifications Cert
on Emp.EmpID = Cert.EmpID
希望这些示例可以帮助您更好地理解查询之间的关系,并现在真正为您的需求提供答案。
如果您想要的是所有“当前”项目的列表,并想查看它们的历史记录,我会首先使用当前。如果您当前的表格有 50 个项目,但历史上您的表格有 420 个项目,则可能会出现这种情况。您不关心其他 360 项目,只关心当前的项目及其历史记录。
select
ddC.WhateverColumns,
ddH.WhateverHistoricalColumns
from
ddCurrent ddC
JOIN ddHistorical ddH
on ddC.ID = ddH.ID
关于mysql - 我无法将我的头围绕在连接上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324569/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!