1

これがすでにここで回答されている場合は申し訳ありませんが、私の問題については何も見つかりません。

私は年月の時系列と、多くの種のバイオマスの時系列データを持っています。15 の特定の種の時系列を分離する必要があります。残念ながら、特定の月に特定の種の個体に遭遇しなかった場合、データは入力されず、0 があるはずの時系列にギャップが残ります。これを改善するために、種データ (右側のテーブル) を完全な時系列 (左側のテーブル) に左結合しようとしています。残念ながら、私の出力結合ではまだデータのない月が欠落しています。たとえば、1986 年の月 1 が欠落しています。これは、右側のテーブルにその月のデータがないためです。左結合にはこれらの行が含まれるべきだと思っていましたが、右側の列は空白のままにしました。

私は以下のコードを持っています。あなたが提案できるものは何でもいただければ幸いです。ありがとう!

Species1<-sqldf("SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
            FROM TimeSeries 
            LEFT OUTER JOIN TrawlBiomassbyMonth 
            ON TimeSeries.StartYear = TrawlBiomassbyMonth.StartYear 
            AND TimeSeries.StartMonthNo = TrawlBiomassbyMonth.StartMonthNo 
            WHERE CommonName = 'White shrimp'
            AND RegionCode = 1")

編集

自分で答えて申し訳ありませんが、その方法を理解したので、他の誰かがこの同じ問題に遭遇した場合に備えて、これを残しておきたいと思いました。問題は、右側のテーブルだけが結合に入力されるのではなく、最終出力を制限する WHERE 引数にありました。私が使用したコードは以下です。

Species1<-sqldf("SELECT StartYear, StartMonthNo, RegionCode, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
            FROM TrawlBiomassbyMonth
            WHERE CommonName='White shrimp'
            AND RegionCode=1")

Species1TimeSeries<-sqldf("SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
            FROM TimeSeries
            LEFT JOIN Species1
            ON TimeSeries.StartYear = Species1.StartYear 
            AND TimeSeries.StartMonthNo = Species1.StartMonthNo")
4

1 に答える 1

0

次の sql クエリを試していただけますか?

SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass
        FROM TimeSeries 
        LEFT JOIN TrawlBiomassbyMonth 
        ON TimeSeries.StartYear = TrawlBiomassbyMonth.StartYear 
        AND TimeSeries.StartMonthNo = TrawlBiomassbyMonth.StartMonthNo 
        WHERE CommonName = 'White shrimp'
        AND RegionCode = 1")

あなたの投稿を読むと、右側のテーブルにいくつかの NULL フィールドがあり、一致がない場合でも左側のテーブルのすべての行を含めたいという問題がありますか?

http://sqlfiddle.com/をセットアップできますか? PSスタックオーバーフロー担当者のためにコメントできませんでしたので、これは答えではありませんが、私は助けようとしています

于 2013-08-17T19:26:08.863 に答える