この質問は実際にこれらの二つにかなり良い答えています。
INNER JOIN ON vs WHERE clause
INNER JOIN vs multiple table names in "FROM"
私は、3つの異なるLINQ式はSQLに変換する方法の2つの例を含めました。暗黙
参加:
from prod in Articles
from kat in MainGroups
where kat.MainGroupNo == prod.MainGroupNo
select new { kat.Name, prod.ArticleNo }
が参加
SELECT [t1].[Name], [t0].[ArticleNo]
FROM [dbo].[Article] AS [t0], [dbo].[MainGroup] AS [t1]
WHERE [t1].[MainGroupNo] = [t0].[MainGroupNo]
インナーに変換されます:
from prod in Articles
join kat in MainGroups on prod.MainGroupNo equals kat.MainGroupNo
select new { kat.Name, prod.ArticleNo }
は
に翻訳されます
SELECT [t1].[Name], [t0].[ArticleNo]
FROM [dbo].[Article] AS [t0]
INNER JOIN [dbo].[MainGroup] AS [t1] ON [t0].[MainGroupNo] = [t1].[MainGroupNo]
左外部結合:
はあなたの式はSQLに変換する方法をテストしたい場合は、私はあなたがLINQPadを試すことをお勧めします
SELECT [t1].[Name] AS [Name], [t0].[ArticleNo]
FROM [dbo].[Article] AS [t0]
LEFT OUTER JOIN [dbo].[MainGroup] AS [t1] ON [t0].[MainGroupNo] = [t1].[MainGroupNo]
に変換されます
from prod in Articles
join g1 in MainGroups on prod.MainGroupNo equals g1.MainGroupNo into prodGroup
from kat in prodGroup.DefaultIfEmpty()
select new { kat.Name, prod.ArticleNo }
。この種のものを理解するための素晴らしいツールです。
何が良いでしょうか? 2つ以上の節または2つ以上の結合節? – frenchie
http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-lineによると、結合節が望ましいようです。 –