ホームページ > データベース > mysql チュートリアル > 複数の結合、カウント、およびLINQに左結合を使用して複雑なSQLクエリを翻訳する方法は?

複数の結合、カウント、およびLINQに左結合を使用して複雑なSQLクエリを翻訳する方法は?

Barbara Streisand
リリース: 2025-01-25 04:18:08
オリジナル
366 人が閲覧しました

How to Translate a Complex SQL Query with Multiple Joins, Counts, and a Left Join into LINQ?

複数の接続を含むSQLクエリ、LINQへのカウントおよび左接続を含む SQLクエリは、複数の接続、左接続、および重合関数を使用して、複数のテーブルからデータを取得します。このクエリをLINQに変換するには、次の手順に従ってください。 sub -query:の変換クエリ以外の列を引用しない限り、クエリを別の変数に抽出しました。

表のメモ:
    テーブル名を範囲変数として、匿名タイプのフィールド名としてエイリアスを使用します。
  • 処理接続: EF/EFコアを使用する場合、結合句はナビゲーション属性に変換されます。それ以外の場合は、匿名のオブジェクトを使用するか、接続を交差して、どこでジョブシミュレーションを去りました。
  • プラスチック関数: Linq集合機能を使用して、countなどのSQL集約関数を置き換えます。
  • 個別():
  • 個別()メソッドを使用して、異なるものを変換します。 左の結合:
  • fromに使用し、defaultifempty()に使用して、左結合をシミュレートします。
  • 匿名タイプ:匿名タイプを使用して、複数の列を組み合わせます。
  • 元のsqlクエリ:
  • linqクエリ式式変換(改良バージョン):
  • ラムダの発現変換:
この改善されたLINQクエリは、カウント関数を処理し、より簡潔かつ効率的にジョブを去り、

の奇妙な判断やがnullになる可能性のある状況など、元のコードの潜在的な問題を回避します。 元のSQLクエリのロジックをより正確に反映しています。 データベースのコンテキストと物理名

<code class="language-sql">SELECT DISTINCT c.Id, 
       c.Title, 
       COUNT(v.Id) AS 'Nb_V2',
       COUNT(DISTINCT v.IdUser) AS 'Nb_V1',
       r.cnt AS 'Nb_R'
FROM TABLE_C c
JOIN TABLE_V v on c.Id = v.Id
LEFT JOIN ( 
    SELECT Id, COUNT(*)  AS cnt 
    FROM TABLE_R 
    GROUP BY Id
) r ON c.Id = r.Id
WHERE c.IdUser = '1234'
GROUP BY c.Id, c.Title, r.cnt</code>
ログイン後にコピー
に従って調整する必要があることに注意してください。

以上が複数の結合、カウント、およびLINQに左結合を使用して複雑なSQLクエリを翻訳する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート