2017-01-29 5 views
1

こんにちは私はリレーショナルデータベースとSQLiteの世界ではかなり新しいですが、私はR MarkdownのSQLiteで複数のデータセットを編集して組み合わせようとしています。それぞれの変更を永続的にする方法。たとえば、ここに私の最初のselect文SQLiteの変更を永続的に保持する

SELECT id, avg(days) Average 
FROM data1 
GROUP BY id 

で私は平均値の列を持った後、その後、私は以下のように主キーを使用して、別のデータセットから1列に参加したいと思います:

SELECT data1.*, data2.purchases 
FROM data1 
LEFT JOIN data2 
ON data1.id=data2.id 

をしかし、私はテーブルをさらに変更しようとすると、最初のセットからの変更を永久に適用して適用したい。私が間違っていることがありますか?これはRマークダウンのSQLiteインサートにあります。私の構文もこれを引き起こす可能性があります。どんな助けもありがとうございます。

+0

"しかし、最初のセットの変更を永久にして、テーブルをさらに変更しようとすると変更が適用されます。"どういう意味ですか? 「私が間違っていることはありますか?」私は知らない、あなたはどんな問題に遭遇しているのですか? – hobbs

+0

@hobbs申し訳ありませんが、私の言葉は混乱しています。そうですね、私の最初のデータセットにはIDのある列とそれに対応する日の2つの列があります。いくつかのIDには1日以上の時間がありますので、SQLにIDと日の平均を印刷させました。今、この新しい変更されたデータセット(IDと平均値を持つもの)から別の列を追加したいと思います。しかし、新しい列を追加すると、ORIGINALデータセット(IDと複数の日数を持つもの)から追加されます。 – Chioma

+0

data1とdata2は同じテーブルか2つの異なるテーブルですか? – Psidom

答えて

1

最初の選択項目の名前を別名(A)に変更し、別のテーブルdata2と結合することができます。

SELECT A.*, data2.purchases 
FROM 
(
    SELECT id, avg(days) Average 
    FROM data1 
    GROUP BY id 
) A 
LEFT JOIN data2 
ON A.id = data2.id 

あなたは一時的に作成することができます。

入れ子の選択:通常、あなたは意志非常に迅速に台無しにあなたのデータベースをデータベースに行われた選択を保存しませんしかし、テーブル、データベースへの現在の接続のために有効です。

012:

は一時テーブルを作成します。

CREATE TEMP TABLE A AS 
SELECT id, avg(days) Average 
FROM data1 
GROUP BY id 

次に、あなたのようにそれを使用することができます。

SELECT A.*, data2.purchases 
FROM A 
LEFT JOIN data2 
ON A.id=data2.id 

通常は、データベースのメンテナであり、持っていない限り、あなたは、データベースに永続的なテーブルを作成することができませんそうする許可。

+0

ありがとうございます。これは、ネストされた選択を行う必要があるデータセットに何かを追加したいときはいつでもですか?私は、データセットに対して実行したい操作が約4つあります。すべての変更を1つのデータセットにまとめる必要があります。 – Chioma

+0

上記の2つのオプションがリストされています。ネストされた選択を使用することも、作成したすべての操作に対して一時テーブルを作成して後で参照することもできます。 – Psidom

+0

さて、例えば最初の変更の場合、私は一時テーブルAを作成します。次に、2番目の変更を私は一時テーブルAを呼び出し、一時テーブルBを作成します。 – Chioma

関連する問題