在另一个表中使用常量除法的问题

时间:2012-11-29 05:44:43

标签: mysql sql

我正在显示记录的压力值。

我总是将压力存储在我的数据库中,知道我可以通过除以14.5将其转换为BAR

所以,我有一个名为configuration的表和一个名为measurements的表,我想这么说 SELECT pressure DIV my_db.configuration.conversion_factor AS pressure FROM my_db.measurements WHERE ...和我的前端s / w会根据情况将my_db.configuration.conversion_factor设置为1或14.5。

但我收到错误unknown column 'my_db.configuration.conversion_factor' in 'filed list'

由于我被剪切/粘贴,我怀疑它是拼写错误 - 所以我的查询有什么问题?


[更新] @JimGarrison让我走上了正确的道路。我需要的是

SELECT pressure DIV (SELECT conversion_factor FROM my_db.configuration WHERE 1) AS pressure FROM my_db.measurements WHERE ...

注意:我为将来阅读此问题的人添加了WHERE 1;我在配置表中只有一行,所以我不需要WHERE - 但你可能会......

谢谢,吉姆

2 个答案:

答案 0 :(得分:2)

你不能像这样引用第二个表中的字段。 my_db.configuration是一个包含行和列的表。 SQL如何知道您要使用哪一行?

我认为您正在寻找的是

select pressure div (select conversion_factor from my_db.configuration where <???>=<???>) ...

其中<???>是您要在convert_factor表中输入要使用的条目的键列名称和值的位置。

答案 1 :(得分:1)

您必须列出要在FROM子句中引用的所有表 - 在本例中, FROM子句。

SELECT pressure DIV my_db.configuration.conversion_factor AS pressure
  FROM my_db.measurements
 CROSS JOIN my_db.configuration
 WHERE ...

假设配置表中只有一行,则使用CROSS JOIN。它不需要连接条件。

或者您可以在Jim Garrison中使用answer建议的子选择。它可能更干净。但请注意,他在FROM子句中引用了配置表。