2011-08-16 14 views
2

に選択ネストされて、私は選択ネストされたと私はかなりのコードを理解していないについて例3渡って来ている:は私が<a href="http://code.google.com/p/sqldf/" rel="nofollow">sqldf</a>からの例を使用してsqliteのを勉強していmysqlite

私は上記のコードをしようとしていると思います

  • (線1-3から)irisからのデータを使用して[Species][Avg of SLs > avg SL]持つテーブルを作成してSLavgという名前のテーブルを作成する方法(ライン4-6からの)種とirisからそれぞれの種の平均Sepal_Length

SLavgは、2回のライン4-5に存在している理由は、私は疑問に思う、私はSLavgを削除しようとしたとsqldfは私statement: no such column: SLavgstatement: no such column: SLavg.Speciesを与えます。

答えて

3

コードから2つの列を照会クロスジョイン2つのテーブル:

select c1,c2 from iris,T2 where .... group by .... 

T2「はSLavg」速記が与えられサブクエリである:SLavgは、両方のサブクエリに使用される

select d1, d2 from iris group by ...... // subquery 

名前と列名が混乱しています。

select 
    iris.Species '[Species]', avg(Sepal_Length) '[Avg of SLs > avg SL]' 
from 
    iris, 
    (select Species, avg(Sepal_Length) AVGcol from iris group by Species) AVGtbl 
where 
    iris.Species = AVGtbl.Species and Sepal_Length > AVGcol 
group by 
    iris.Species 

より理解する必要があります:

  • サブクエリAVGtblirisのクロス参加する二つの列(SpeciesAVGcol
  • を生成し、AVGtblは4を生産するのは彼らに別の名前を挙げてみましょう列(iris.Species,iris.Sepal_Length,AVGtbl.Species,AVGtbl.AVGcol)。

トップレベルselectは、これらの4つで動作します。

関連する問題

 関連する問題