問題タブ [on-clause]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQL JOIN - WHERE 句と ON 句
それを読んだ後、これはExplicit vs Implicit SQL Joinsの複製ではありません。答えは関連しているかもしれません(または同じかもしれません)が、質問は異なります。
違いは何ですか?それぞれに何を入れる必要がありますか?
理論を正しく理解していれば、クエリ オプティマイザーは両方を同じ意味で使用できるはずです。
sql - 定数値は結合のON句にどのように影響しますか?
最近、LEFT JOINのON句に(1 = 1)などの値が含まれている可能性があることを発見しました。
これは、結合がどのように機能するかについての私の認識を壊すので、私には腹を立てます。
次の状況のより複雑なバージョンに遭遇しました。
それは完全に合法です。「Manager.ID=-1」は、もしあれば、何を達成しますか?これは参加にどのように影響しますか?
linq - Linqは自明ではない状態で参加したままになりました
これは問題ありません、それは左結合を生成します
しかし、私がこのようなことをしたい場合はどうでしょうか:
doctrine - 教義2と「「ON節」の不明な列」
私は現在、ZFでDoctrine2を使用しているプロジェクトで働いています。ここまでは順調ですね。しかし、私はバグのように見える問題を抱えています。
私は自分のリポジトリの1つに次のコードを書きました:
次のSQLが生成されました:
ただし、常に「ON句の不明な列a0_.student_id」が表示されますが、student_id列は実際にはApplicationsテーブルに存在します。
少しグーグルで検索したところ、このリンクhttp://www.oscommerce-fr.info/faq/qa_info.php?qID=198(フランス語で申し訳ありません)を見つけました。 FROM句がいくつかある場合は、括弧を追加する必要があります(私の場合です)。
変更してSQLコードを書き直すと、FROMアプリケーションa0_、ミッションm2_
に :
できます !ただし、DQLコードにこれらの括弧を追加する方法がわかりません(試しましたが失敗しました)。
それで、おそらくそれはバグであり、Doctrine 2は、FROM句が複数ある場合は常に括弧を挿入する必要がありますか、それとも私が間違っているのでしょうか?
sql - テーブルが結合を離れたときの「where」句と「on」句の違いは何ですか?
SQL1:
SQL2:
違いはwhere
andon
句ですが、同じ結果を返しますか?違いは何ですか?DBMSはそれらを同じように実行しますか?ありがとう。
mysql - OR が ON 句で使用されている場合、MySQL は JOIN で使用可能なインデックスを使用しません。
それぞれの列を持つ 5 つのテーブルがあるとします。
- 家 (id、名前、street_id)
- 通り(ID、名前)
- 写真(ID、名前)
- house_photo (house_id、photo_id)
- street_photo (street_id、photo_id)
そして、すべての「id」列と「_id」で終わる列には既にインデックスがあるとします。
(実際、私の質問は家や通りとは何の関係もありません。それらは議論のためです。)
ここで、各通りを列に入れたいとします。その通りまたはその家に写真がある場合は、次の列に写真を入れたいとします...
ここで注意が必要なのは、すべての家が 1 つのテーブルにあることです。そして、別のテーブルのすべての写真。しかし、2 つをリンクするには、5 つのテーブルすべてにアクセスする必要があります。
4 つの JOIN を含む次のクエリを思いつきました。
家の写真が 1 枚以上あり、その家の通りの写真が 1 枚以上ある場合に二重が生成されるため、重複を除外することが明確です。(カルテジアン製品)しかし、これは私の問題とは何の関係もありません。
私が抱えている問題は、クエリが非常に遅いことです。(終了まで1分以上かかります)
MySQL にクエリを分析するように依頼すると ('explain extended')、最後の JOIN (ON 句に OR がある) を処理するときに使用可能なインデックスが使用されないことがわかります。
最後の JOIN を 2 つの JOIN に分割すると (つまり、5 番目の JOIN を追加する)、クエリは再び非常に高速になります (完了するのに 1 秒かかります)。
私の質問は次のとおりです: ON 句に OR を導入して、MySQL がその JOIN に使用可能なインデックス/キーを使用しないのはなぜですか?
私はすでに USE INDEX と FORCE INDEX を使用してみましたが、動きません。
説明/ヘルプは大歓迎です。
oracle - ON 句にサブクエリがある 2 つのテーブルの右外部結合
結果セットを取得するために、2 つの liferay テーブルusers_
で右外部結合を実行しようとしています。expandovalue
すべてのユーザーに対して次のクエリを実行すると、望ましい結果が得られました。
ユーザーのセット (ユーザー グループの一部) に対して同じことをしようとすると、エラーが発生しました。以下のクエリ:
userid
これは、特定のユーザーグループ内の人々の s を与えるサブクエリです。
私は完全に間違った方向に進んでいますか?お知らせ下さい。
codeigniter - codeigniterアクティブレコードを使用した複数のon句
codeigniterアクティブレコードを使用して、左結合クエリで複数のon句を実行する必要があります。私はこのコードを書きます:
このcodeigniteraddwhere not in句を実行することで、左結合に関連するON句を追加する必要があります。可能であれば、アクティブなレコードを使用したいと思います。
db2 - DB2のON句でサブクエリが機能しない理由
この単純なクエリがOracleでは正常に機能するのに、DB2では機能しない理由:
サブクエリを含む条件をwhere句に移動すると役立つ場合がありますが、これにより、外部結合が内部に制限されます。
ruby-on-rails - レール上の左結合を含む ON 句にパラメーターを追加する方法はありますか?
次のような非常に複雑なクエリがあります。
次に、2 つの日付の間に作成されたものObjects
だけをすべて表示したいと思います。Important_things
これをそこに置くと、where
すべてを取得することはできません。通知された日付の間にあるObjects
ものだけです。Objects
Important_things
生のSQLを使用したソリューションは次のとおりです。
select * from objects left join important_things on important_things.object_id = objets.id and important_things.created_at between 'x' and 'y'
それ以外の:
select * from objects left join important_things on important_things.object_id = objets.id where important_things.created_at between 'x' and 'y'
これらすべてのオブジェクトが本当に必要であり、生の SQL を使用したくない、回避策、またはON
関連付けの句にパラメーターを渡す可能性はありますか?