我正在显示记录的压力值。
我总是将压力存储在我的数据库中,知道我可以通过除以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
- 但你可能会......
谢谢,吉姆
答案 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子句中引用了配置表。