2011-09-22 6 views
2

は、私は次のクエリがどのように機能するかを知って、私は用語のちょうど困惑しています。これもサブクエリと見なされますか?

各クエリにはFROM句が必須で始まり、いずれかのSELECTまたはGROUP句で終わらなければなりません。 2つの節の間に任意の数のFROM ... LET ... WHERE節を置くことができます。サブクエリは、単にそれがあまりにも同じ構造を有することを意味するクエリ内のクエリ、次のとおりです。

var result = from p1 in artists 
      from p3 in (from p2 in p1.albums 
         select new { ID = p2.id, Title = p2.title }) 
      select p3; 

しかし、上記の例では、サブクエリとは異なり、以下のサブクエリ(from p2 in artist.Albums)は/その非常に自身のSELECTで終わっていませんGROUP句を使用しているため、FROM句で始まりSELECT句とGROUP句で終わるわけではありません。だから私の質問は、用語のサブクエリはまた、その構造が少し異なっていても、from p2 in artist.Albumsに適用されるかどうかですか?

var result1 = from p1 in artists 
       from p2 in p1.Albums 
       select new { Artist_id = p1.id, Album_id = p2.id }; 

答えて

1

、何のサブクエリ、2つのfrom句を持つだけのクエリはありません。このように2つのfrom句を使用して舞台裏

SelectMany操作に変換されます。

artists.SelectMany(p1  => p1.albums 
        ,(p1,p2) => new { Artist_id = p1.id, Album_id = p2.id }) 
+0

はい、しかし、ではないのサブクエリと行動が似「p1.AlbumsでP2から」各外部要素p1について、その全体の集合(p1.Albums)が列挙されているという感覚? – user702769

+1

はい、 "' 'p1.albums'"は、 "p1.albums select p2'の" from p2 from "のサブクエリ式と同じですが、サブクエリ式を持つクエリ式を持つかどうかを判断するクエリ式の構成方法1つなし。一つの 'select'節と' group by'節がなければ、それはたった一つの問い合わせ式です(おそらく複数の 'from'節があります)。とにかく何かが_query_とみなされるかどうかはより主観的ですが、_query式の構文に関してはより明確です。関係なく、あなたがこれを答えるかどうかの一日か二日で答えたよう –

+0

私はあなたの時間を割いて、本当に申し訳ありませんが、私はそれをマークします。とにかく、 "...とグループ句なし..."とはどういう意味ですか?私は、クエリ内に1つのSELECT句または唯一のGROUP句がある場合、クエリはサブクエリなしで1つのクエリ式しか持たないと仮定します。クエリーQは、SELECTが続く句にグループを持っている場合は、その後、Qは、概念的に2つのクエリの式(つまり、Qは、サブクエリを持つクエリ式を持っていない)に分割されます! – user702769

2

いいえ、一番下にあなたがサブクエリ、参加暗黙的ではないがやっているあなたに感謝。結合は、(同じクエリ内の)両方のテーブルを同時に照会する場所です。あなたの2番目のクエリ、result1

関連する問題