質問

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のみを使用することを検討してください。実際にはより効率的です。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top