2012-03-28 6 views
1

実際には危険なほどのSQLしか知りません(通常はバックエンドは動作しません)が、次のビューを作成することはできません;)結果セットは、(すべての列の1xNフラットではなく)複数のテーブルから列エイリアスとして割り当てられた行を持つデータセットです。適切な関連テーブルの行IDに関連付けられた外部キーに基づいて、メインテーブルを見るときに多対1の関係があります。2x2(またはNxN)の結果の行列を返すビューを作成する方法

dataset.transaction_row[n]: col1, col2, col3, coln... (columns from the transaction table) 
dataset.category_row[n]: col1, co2, col3, coln... (columns from the category table) 

のように...私は次のエラーを取得

Query Error: near "AS": syntax error Unable to execute statement 

は、理想的には私がお返しに、このようになります。データセットを希望しますから:

CREATE VIEW view_unreconciled_transactions 
AS SELECT account_transaction.* AS transaction_row, 
      category.* AS category_row, 
      memorized.name_rule_replace OR account_transaction.name AS payee 
FROM account_transaction 
LEFT JOIN memorized ON account_transaction.memorized_key = memorized.id 
LEFT JOIN category ON account_transaction.category_key = category.id 
WHERE status != 2 
ORDER BY account_transaction.dt_posted DESC 

結果列セレクタは式(sqliteの構文図を参照)を含む反復可能であるため、十分に簡単です。エラーを参照して、私はそれが2番目の 'AS'について不満を持っていると仮定しています。ここで、テーブルを取得しようとしています。*エイリアスとして割り当てられています。適切な方向への助けに感謝します。もし私がしなければならなかった、私はすべての列を明示的に述べることができると思うが、それはkludgeのように感じる。

答えて

1

AS修飾子は、使用した*などのコレクションではなく、単一の列にのみ適用できます。あなたは特定の名前にそれらを壊す必要があります(とにかくベストプラクティスIMHOです)

"ピボットテーブル"を作成するように見えます。彼らはデータベースに作成するのが難しいかもしれません。私はあなたがデータの結果、それぞれの行が別のテーブルソースから来て、各テーブルの列がIDENTICALである場合、UNIONステートメントを使用して、1つのデータセットであるように異なる結果を結合することができます。

列はすべてUNIONの最初のデータセットから名前付けの手がかりを取り、データ型allは同じである必要があります。

+0

お返事ありがとうございます。このビューでは、問題の特定の行に属する「メタデータ」のいくつかのFKがあります。最初の素朴な考えは、これを1つの選択にスイープすることができるということでした。私は、中間層が使用されている十分な大きさのプロジェクトに慣れています。私は、すべての仕事をしているそのチームからだまされていると思います;)私はまだプロジェクトのこの部分には行きませんでしたが、これは、私がやっていることの残りの部分のようなシーケンスされたクエリであることになります。 –

関連する問題