所以我知道足够的SQL只是为了非常危险(我通常不会在后端工作)但是无法成功创建以下视图;)我之后的结果集是一个数据集从多个表(而不是所有列的1xN平面)分配为列别名的行。根据与相应相关表的行id关联的外键,查看主表时存在多对一关系。
理想情况下,我想要一个在返回中看起来像这样的数据集:
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的语法图)。在提到错误时,我假设它正在抱怨第二个'AS',我正试图获得表格。*被指定为别名。任何正确方向的帮助表示赞赏。如果必须的话,我想我可以明确说明所有列,但这感觉就像一个kludge。
答案 0 :(得分:1)
AS
修饰符只能应用于单个列,而不能应用于您使用的*等集合。你必须将它们分解成具体的名称,(无论如何,这是最好的做法)
看起来你想制作一个“数据透视表”。在数据库中制作它们可能很棘手。我可以说,如果你是一个数据结果,每行来自不同的表源,并且每个表的列都是IDENTICAL,那么你可以尝试使用UNION
语句将不同的结果连接在一起,就像它们一样只有一个数据集。
请注意,所有列都从UNION中的第一个数据集中获取其命名提示,并且数据类型都需要相同。