1

警告: 私はデータベースについてしゃがむことを知っているので、あいまいで不明確な質問がたくさんあります。

クローン化された更新ステートメントの代理としてビューを使用する必要があることを発見しました。ビューを機能させることはできますが、行に問題があります。

この投稿は、必要な更新を行うのに役立ちましたが、ビューは cron スケジュールではなく、必要なときにいつでもその更新を実行できることがわかったので、ビューの行 ID または同等のものに基づいてビューの列の値を設定するにはどうすればよいでしょうか?

必要な選択があります:

 SELECT SUM( table2.column1/ (

 SELECT table2constant
 FROM table3
 )
 FROM table2
 WHERE table2table1id = table1id

table1id は、table1 の AI ID 列です。table2table1id は table1id への PKd です。ビューには、table2 のように table1id への列 PKd が必要であり、ビューにはすべての個別の table1id を​​表す必要があります。

専門用語が外れていると思いますが、必要なものがわかると思います。

わかりやすくするために、必要なだけ編集を行います。

よろしくお願いします!

編集1

table1 への挿入時にビューを作成するトリガーを作成する必要がありますか? 私が必要/欲しいものであるマテリアライゼーションについて見つけましたか?

明瞭さ

各 table1.table1id の合計値が必要です

進捗

このコードでは、table1 から最初の ID と合計のみを取得しています。各 table1.id の合計が必要です。

CREATE VIEW db1.sums as 

SELECT SUM( table2.column1/ (

 SELECT table2constant
 FROM table3
 ) as theSum, table1id
 FROM table1, table2
 WHERE table2.table2table1id = table1.table1id
4

2 に答える 2

2

明確にするために、ここで何を達成しようとしているのかはまだわかりませんが、投稿した内容が機能する場合は、

SELECT table1.table1id,
    SUM( table2.collumn1 ) / (SELECT table2constant FROM table3 ) as theSum
 FROM table1, table2
 WHERE table2.table2table1id = table1.table1id GROUP BY table1.table1id

(SELECT table2constant FROM table3 )データベースに存在する理由がない場合は、定数に置き換えることができます(更新されていない場合)。

于 2012-10-06T19:15:02.983 に答える
2

実際には非常に単純です。これを行う方法の例を次に示します。

SELECT SUM( table1.column / table2.column ), table1.*, table2.*
FROM table1, table2 
WHERE table1.id = table2.column_id
于 2012-10-06T17:05:49.660 に答える