外部キー値に関するPOSTGRESQL 9.0テーブルをクエリしますか?
-
16-10-2019 - |
質問
NOOBタイプの質問:
キャンディーと色の2つのテーブルがあるとします。色のテーブルには、01黄色、02青、03緑などのコード/値のペアがあり、Candiesテーブルでコードで参照されています。
明示的な結合なしで、すべての青いキャンディーのキャンディーテーブルを照会するにはどうすればよいですか? 2年間、私はこれらのクエリを参加して書いています。
select * from candies a join colors on(a.color_code = o.color_code)
ここで、o.color_value = 'blue';
私は毎回ナイフの戦いに銃を持ってくることが確かですが、私のグーグルは無益でした。
ありがとう。
解決
「ナイフの戦いに銃を持ってくるたびに毎回確信していますが、私のグーグルは無益でした。」何があなたをそう思わせたのですか? RDBMSは「結合」するように構築されています
あなたの目的があなたをより読みやすくすることを目的としているなら、あなたは使用'構文:
SELECT * FROM candies JOIN colors USING(color_code) WHERE color_value = 'blue';
あるいは、クエリに「青」をハードコーディングしているのを見ると、代わりにコードをハードコーディングすることを検討できます。
SELECT * FROM candies WHERE color_code = '02';
しかし、これは、実際のシナリオでコードが記述的でない限り、読みやすさを低下させます(青の「Blu」など)
他のヒント
あなたはそれを次のように書くことができます:
select
ca.*
from
candies ca
where
ca.color_code = (
select co.color_code
from colors co
where co.color_value = 'blue'
)
しかし、違いはないはずです。実際、結合アプローチはもう少し堅牢です。
さらに - 色のテーブルを取り除くことと、コードの代わりにColor_Valuesのみを使用することを検討してください。実際にはより効率的です。
所属していません dba.stackexchange