2012-03-28 3 views
1

그래서 나는 충분히 위험한 SQL을 알기 때문에 (보통 백엔드는 작동하지 않지만) 다음 뷰를 생성 할 수 없습니다 성공적으로;) 필자가 취한 결과 세트는 (모든 컬럼의 1xN 플랫 대신) 여러 테이블에서 컬럼 별명으로 지정된 행을 갖는 데이터 세트입니다. 해당 테이블의 행 ID와 연관된 외래 키를 기반으로 메인 테이블을 볼 때 다 대일 관계가 있습니다.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'에 대해 불평하고 있다고 가정합니다. * 별칭으로 할당되었습니다. 올바른 방향으로 도움을 주시면 감사하겠습니다. 해야만한다면, 모든 컬럼을 명시 적으로 표시 할 수 있다고 생각하지만, 그것은 마치 진흙탕처럼 느껴집니다.

답변

1

수정자를 하나의 열에 만 적용 할 수 있으며 * 사용한 항목과 같은 모음에는 적용 할 수 없습니다. 특정 이름으로 그들을 분해해야합니다 (어쨌든 모범 사례 IMHO입니다)

"피벗 테이블"을 만들고 싶습니다. 데이터베이스에 작성하는 것이 까다로울 수 있습니다. 데이터 결과, 각 행이 다른 테이블 소스에서 제공되고 각 테이블의 열 양식이 IDENTICAL 인 경우 UNION 문을 사용하여 서로 다른 결과를 하나의 데이터 셋처럼 결합 할 수 있다고 말할 수 있습니다.

모든 열은 UNION의 첫 번째 데이터 집합에서 이름 지정 큐를 가져오고 데이터 형식은 모두 동일해야합니다.

+0

응답 해 주셔서 감사합니다. 이 견해로는 문제의 특정 행에 속하는 "메타 데이터"에 대한 몇 가지 FK가 있으며, 초기 순진한 생각은 이것을 단일 선택으로 스윕 할 수 있다는 것입니다. 나는 중간 계층을 사용하는 큰 프로젝트에 익숙합니다. 모든 작업을 수행하는 팀에서 버릇이 있다고 생각합니다.) 아직 프로젝트의이 부분에 익숙하지 않았지만 생각하고 있습니다. 이것은 내가하는 일의 나머지 부분처럼 연속 된 질의가 될 것입니다. –

관련 문제