MySQL 我可以在连接中计算并显示结果吗

Posted

技术标签:

【中文标题】MySQL 我可以在连接中计算并显示结果吗【英文标题】:MySQL can I in a join calculate and show the results 【发布时间】:2021-07-20 17:04:43 【问题描述】:

我在第一个表中有 2 个表,我定义了可能的设备,例如消火栓或火灾报警系统,所有这些都是在一定时间内检查,在这个表中我有这些设备的名称和它们的时间是检查,在第二个表中,我有最后一次检查的日期,我想创建一个视图列表,但其中包含信息,下一次检查何时实现, 像这样

Create View listafacilitymanagemen AS
SELECT DISTINCT ID, tipo, posicion, checeo, checeo + checeointerval, 
JOIN ID, tipo, checeointerval
FROM hotel.facilitymanagemen_equipo
ORDER BY checeo + checeointerval;

我的数据库非常大,我不希望它出现在“facilitymanagement”表的另一列中。

【问题讨论】:

表之间需要一个连接条件,否则会得到一个全叉积。 你不能在FROM之前有JOIN 我不明白你在做什么。JOIN 后面必须跟一个表名,但 IDtipocheceointerval 是列,而不是表。 请添加样本数据和想要的结果。 没错,这些是列 【参考方案1】:

我非常信任 w3school,在那里我找到了这个https://www.w3schools.com/sql/sql_join_inner.asp。

CREATE VIEW TABLE facilitymanagement
SELECT m.ID, 
m.tipo, 
e.tipo,
e.ID,
m.posicio,
m.checeo,
m.checeo + e.checeointerval,
m.checeocontrollado,
m.checeooficial,
m.checeooficial + e.checeooficialinterval,
m.checeooficialcontrollado,
m.controllero,
e.checeointerval,
e.checeooficialinterval
FROM hotel.facilitymanagemen (m)
INNER JOIN hotel.facilitymanagement_equipment (e)
ON m.tipo = e.ID
ORDER BY m.checeooficial + e.checeooficialinterval;

我是德国人,根据法律,我们要检查与火灾有关的建筑物中的设备,并由专家和负责的机构进行检查,此外,我们为所有事情提供保险,如果超出间隔,他们不要付钱,所以这个视图列表非常重要,我在上面添加了一些列“checeooficial”,这个带有间隔的列给出了 ORDER BY 标准。

如果我的代码有效,我将无法尝试。

【讨论】:

【参考方案2】:

因为我有 2 个数据库,我从其中一个精确地想要 FROM 和 INNER JOIN 子句中的数据,它是数据库“酒店”。

【讨论】:

【参考方案3】:

我添加了一个 WHERE 子句来过滤行,因此 VIEW TABLE 仅包含实际系统日期和我订购 DESC 之后的数据;所以最紧急的装备先出现。

CREATE VIEW TABLE facilitymanagement AS
SELECT m.ID, 
m.tipo, 
e.tipo,
e.ID,
m.posicio,
m.checeo,
m.checeo + e.checeointerval,
m.checeocontrollado,
m.checeooficial,
m.checeooficial + e.checeooficialinterval,
m.checeooficialcontrollado,
m.controllero,
e.checeointerval,
e.checeooficialinterval
FROM hotel.facilitymanagemen (m)
INNER JOIN hotel.facilitymanagement_equipment (e)
ON m.tipo = e.ID
WHERE m.checeooficial + e.checeooficialinterval > NOW()
ORDER BY m.checeooficial + e.checeooficialinterval DESC;

调用 CURDATE() 函数而不是 NOW() 更好。

【讨论】:

以上是关于MySQL 我可以在连接中计算并显示结果吗的主要内容,如果未能解决你的问题,请参考以下文章

tomcat dbcp 和 mysql 连接池

mysql左连接同表求和错误结果

Mysql连接两个表并根据主键计算总记录

mysql - 如何在 JOIN 查询后在结果表中显示连接表的主键?

mysql只能取出一条记录为啥不显示

存储过程将codeigniter与mysql数据库断开连接