約LINQは、データベース(左結合)と右の接続(右結合)の違いで、左の接続接続の問題を残しました

 今日、やってビジネスLINQは、私は接続を使用したい時に予選後に表示される条件を追加することが見出されたままに

したがって、データは、条件に追加された場合には、仕事をしません

                VAR userPer = Convert.ToInt32(ID); //フロントIDを渡します
                VaRの役割= DB.AdminUserRole.Where(M => m.id == userPer).FirstOrDefault();
                VAR resultTitle = DB.AdminPagesでQから
                                  q.id対等に(P => p.RoleId == role.RoleId && p.Status == 1)DB.AdminPagePermission.Where中、W参加左にw.PageId
                                  )(left.DefaultIfEmptyでQWから
                                  {ヴァル= q.Status、公社= "TableStatusは"} {ヴァル= status_kbn.int_value.Value、公社= status_kbn.type}新たに等しい新たにDB.Classificationにstatus_kbnに参加
                                  //どこqw.RoleId == role.RoleId
                                  新しい選択
                                  {
                                      ID = q.id、
                                      タイトル= q.PageTitle、
                                      PID = q.ParentPageId、
                                      PAGEID = q.id、
                                      ソート= q.Sort、
                                      STATUSTEXT = status_kbn.texts、
                                      //左から真または偽の判断クエリ結果を結合します
                                      チェック= QW!= nullの?正誤、
                                  }。
                結果= resultTitle.ToList()でした。
                リターンJSON(その結果、JsonRequestBehavior.AllowGet)。

  それができるように、

 

 

スプレッド

 

 

左は右の参加/参加/インナー関連する参加

:左と右の接続文の要約に

右の表にのみ影、唯一の左のテーブルに影響を与え、右の接続左の接続。

左参加

SELECT * FROMはtbl1.ID TBL1左= tbl2.ID TBL2参加

データ接続が満足TBL1とTBL2ことを、すべてのデータのどこ条件を去った後、検索結果の表示を。

簡単に言えば左結合右の表に影響を与える

右に参加

しようTBL2どこtbl1.ID TBL1右= tbl2.IDからSELECT *

検索結果データの全てのデータの条件とTBL1 TBL2満たします。

簡単に言えば右インパクトに参加し、テーブルの左側にあります。

内部結合

SELECT * FROM TBL1 INNER tbl1.IDがON = tbl2.ID TBL2を登録しよう

と同じ機能とTBL1から*を選択し、TBL2 tbl1.id = tbl2.id.

その他の関連情報

隠された接続として知られているデータベース言語で使用される1つの.WHERE connect文句、。接続INNERは、接続が支配的になることです生産するためにON句......登録しよう。結果は同じであり、本質的な差は存在しない、とINNER JOINが発生接続関係(他のパラメータは、支配的な接続をJOINもあります)。しかし!データベース言語の仕様と開発との暗黙の接続は、徐々に段階的に廃止している、新しいデータベース言語は基本的にすべての主要なに接続され、暗黙的な接続を断念しました。

2.ありませんいかに接続は、あなたが句に参加するが、同じテーブルに接続したときに、注意を払うにエイリアスを定義し、それ以外の場合はエラーを使用することができます!

>インナーは参加:理解などa.field = b.fieldのように「左の表示がある」として、すべての既存のリストを表示:「作動可能に連結された」テーブルが2件のデータが加入左に表示されているように理解します\\ Bとデータの両方のデータがある、データがBヌルに表示されていない

右側の参加> B:a.field = b.fieldに、例えば、「右表示」として読み取らは、表Bに表示されそして\\ B内のすべてのデータは、Bが存在し、データ中に存在している、ヌルでないデータではない

完全なC>参加:2つのテーブル内のすべてのデータを「完全に接続された」と理解を示し、実際のインナー+ (インナー左)+(インナー右)

。完全なアウトリーチ、ZuoLian右関節:3テーブル.join一次および二次外側に分けることができるの3種類に参加します。
アウトリーチ完全に両方のテーブルからすべてのレコードが含まれています。
左翼は、右及びその逆に右によって補完、メインテーブルの残っている

:原則に従うことが良い点で、データベースクエリのパフォーマンスをするために4.一般的な

小型、正面に大きなテーブル、クエリのテーブルを結合テーブルを行うときテーブル
プレフィックスフィールドによってテーブル内の異なるフィールドを区別するために、エイリアステーブルを使用せずに
、接続条件テーブルの前の書き込みに検索条件に制約
インデックスクエリを使用して可能な限りフィールド

左は右の参加/参加/インナー関連する参加

:左と右の接続文の要約に

右の表にのみ影、唯一の左のテーブルに影響を与え、右の接続左の接続。

左参加

SELECT * FROMはtbl1.ID TBL1左= tbl2.ID TBL2参加

データ接続が満足TBL1とTBL2ことを、すべてのデータのどこ条件を去った後、検索結果の表示を。

簡単に言えば左結合右の表に影響を与える

右に参加

しようTBL2どこtbl1.ID TBL1右= tbl2.IDからSELECT *

検索結果データの全てのデータの条件とTBL1 TBL2満たします。

簡単に言えば右インパクトに参加し、テーブルの左側にあります。

内部結合

SELECT * FROM TBL1 INNER tbl1.IDがON = tbl2.ID TBL2を登録しよう

と同じ機能とTBL1から*を選択し、TBL2 tbl1.id = tbl2.id.

その他の関連情報

隠された接続として知られているデータベース言語で使用される1つの.WHERE connect文句、。接続INNERは、接続が支配的になることです生産するためにON句......登録しよう。結果は同じであり、本質的な差は存在しない、とINNER JOINが発生接続関係(他のパラメータは、支配的な接続をJOINもあります)。しかし!データベース言語の仕様と開発との暗黙の接続は、徐々に段階的に廃止している、新しいデータベース言語は基本的にすべての主要なに接続され、暗黙的な接続を断念しました。

2.ありませんいかに接続は、あなたが句に参加するが、同じテーブルに接続したときに、注意を払うにエイリアスを定義し、それ以外の場合はエラーを使用することができます!

>インナーは参加:理解などa.field = b.fieldのように「左の表示がある」として、すべての既存のリストを表示:「作動可能に連結された」テーブルが2件のデータが加入左に表示されているように理解します\\ Bとデータの両方のデータがある、データがBヌルに表示されていない

右側の参加> B:a.field = b.fieldに、例えば、「右表示」として読み取らは、表Bに表示されそして\\ B内のすべてのデータは、Bが存在し、データ中に存在している、ヌルでないデータではない

完全なC>参加:2つのテーブル内のすべてのデータを「完全に接続された」と理解を示し、実際のインナー+ (インナー左)+(インナー右)

。完全なアウトリーチ、ZuoLian右関節:3テーブル.join一次および二次外側に分けることができるの3種類に参加します。
アウトリーチ完全に両方のテーブルからすべてのレコードが含まれています。
左翼は、右及びその逆に右によって補完、メインテーブルの残っている

:原則に従うことが良い点で、データベースクエリのパフォーマンスをするために4.一般的な

小型、正面に大きなテーブル、クエリのテーブルを結合テーブルを行うときテーブル
プレフィックスフィールドによってテーブル内の異なるフィールドを区別するために、エイリアステーブルを使用せずに
、接続条件テーブルの前の書き込みに検索条件に制約
インデックスクエリを使用して可能な限りフィールド

おすすめ

転載: www.cnblogs.com/qiqiqiqiqia/p/11907451.html