ホームページ >データベース >mysql チュートリアル >明示的および暗黙的な JOIN によって SQL エラーが発生するのはなぜですか?
明示的結合と暗黙的結合の組み合わせによる SQL エラー
単一の SQL クエリで明示的 JOIN と暗黙的 JOIN を組み合わせると、エラーが発生する可能性があります。 次の例は、この問題を示しています:
<code class="language-sql">SELECT e1.name, e2.name, e1Manager.name FROM Employee e1, Employee e2 INNER JOIN Employee e1Manager ON e1.managerEmployeeID = e1Manager.employeeID</code>
このクエリは MSSQL 2000/2008 と MySQL の両方でエラーを生成します:
構文の問題を理解する
エラーは優先順位の競合によって発生します。 SQL では、JOIN
キーワードは、FROM
句内のカンマ区切りのテーブル リストよりも優先されます。 パーサーがまだ e1
節を完全に処理していないため、エイリアス ON
は JOIN
の FROM
節内では認識されません。 基本的に、e1
は、JOIN
条件で参照される時点では未定義です。
休止状態と結合の構文
Hibernate には、明示的結合と暗黙的結合を混合した場合に不正な SQL が生成されるという既知の問題があります。 Hibernate に明示的な JOIN の排他使用を強制することは潜在的な回避策ですが、アクセス可能な HQL ドキュメントに制限があるため、これを実現するための具体的な詳細は現在利用できません。
以上が明示的および暗黙的な JOIN によって SQL エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。