0

圧力の記録値を表示しています。

私は常に圧力を PSI としてデータベースに保存します。14.5 で割ることで BAR に変換できることを知っています。

したがって、呼び出されたテーブルと呼び出されたテーブルがあり、configurationそうmeasurements言いたい のですがSELECT pressure DIV my_db.configuration.conversion_factor AS pressure FROM my_db.measurements WHERE ...、フロントエンドの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将来この質問を読む人のためにそれを追加します。構成テーブルには 1 行しかないので、WHERE- は必要ありませんが、..

ありがとう、ジム

4

2 に答える 2

2

そのような 2 番目のテーブルのフィールドを参照することはできません。 my_db.configuration行と列を持つテーブルです。SQL はどの行を使用するかをどのように認識しますか?

あなたが探していると思うのは

select pressure div (select conversion_factor from my_db.configuration 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 は、構成テーブルに行が 1 つだけあると想定して使用されます。結合条件は必要ありません。

または、 Jim Garrisonが回答で提案しているように、サブセレクトを使用することもできます。そのほうがきれいなのでしょう。ただし、FROM 句で構成テーブルを参照していることに注意してください。

于 2012-11-29T05:51:43.627 に答える