0

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

我总是将压力作为 PSI 存储在我的数据库中,知道我可以通过除以 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- 但你可能..

谢谢,吉姆

4

2 回答 2

2

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

我认为你正在寻找的是

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

where<???>是您从 conversion_factor 表中放置要使用的条目的键列名称和值的位置。

于 2012-11-29T05:49:44.590 回答
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在他的回答中建议的子选择。它可能更清洁。但请注意,他在 FROM 子句中引用了配置表。

于 2012-11-29T05:51:43.627 回答