부모 테이블과 상위 테이블과 구조가 조금 다른 여러 개의 하위 테이블이 있습니다. 상위 테이블과 모든 하위 테이블의 모든 데이터를 모든 추가 열로 가져 오는 쿼리를 어셈블 할 수 있습니까?Postgres : 부모 테이블과 모든 자식 테이블에서 데이터 선택
답변
적절한 스키마 및 사용을 사용하여이 구조에 대한 PostgreSQL의에게 상속
CREATE TABLE foo(x int);
CREATE TABLE bar(y int) INHERITS (foo); -- <===
INSERT INTO foo(x) VALUES(1); -- one record
INSERT INTO bar(x,y) VALUES(2,3); -- one record
SELECT * FROM foo; -- two results
SELECT * FROM ONLY foo; -- one result, see ONLY
http://www.postgresql.org/docs/current/interactive/ddl-inherit.html
요청한 것이 아니라 OP (및 나)는 행이 아니라 열이 필요합니다. 나는. 'SELECT * FROM foo WHERE x = ?; '와 같은 질의는 특정 행이'bar' 테이블에 속하면'x'와'y' 열로 결과를 반환합니다. – raveren
간단한 대답은 쉽게 그렇게 할 수 없다. 귀찮은 행 (Informix와 달리)을 사용할 수 없으므로 간단한 선택 방식이 효과가 없습니다.
row_to_json과 많은 유니온 문을 사용하는 쿼리를 프로그래밍 방식으로 만들 수는 있지만, 그 작업은 매우 복잡하고, 원하는 것은 아닐 수도 있습니다. 열이 같은 이름이지만 다른 하위 테이블에서 다른 의미를 가질 수있는 경우를 처리하지 못합니다.
일반적으로 여기에 접근 방식을 재고해야한다고 생각합니다. 들쭉날쭉 한 행에 의존하려는 경우 응용 프로그램과 데이터베이스간에 매우 느슨한 계약을 많이 맺을 것이므로 고유 한 문제에 대한 많은 잠재력을 갖게 될 것입니다.
여기서 가장 좋은 방법은 추가 열을 left join
을 사용하여 검색 할 수있는 조인 테이블로 이동하는 것입니다.
여기에 필요한 것은 왼쪽 외부 조인을 사용하는 것입니다. 또 다시, 아니 이상적인 솔루션 및 데이터베이스 구조의 잠재적 변화가 더 나은 것,하지만 여전히, 여기있다 : 것
CREATE TABLE foo(x int);
CREATE TABLE bar(y int) INHERITS (foo);
INSERT INTO foo(x) VALUES(1);
INSERT INTO bar(x,y) VALUES(2,3);
SELECT foo.*, bar.y
FROM foo LEFT OUTER JOIN bar ON (foo.x = bar.x);
단지 부모의 항목은 Y에 대한 널 (null)이이 촬영 될 그러나 모든 데이터를 제거합니다. 단점은 하위 테이블에서 특별히 추가 열의 이름을 지정해야한다는 것입니다. (비록 어쨌든 코드로 들어가는 쿼리에서 *를 사용하지 않는 것이 가장 좋습니다.)
실제로 하위 테이블에 열의 이름을 지정하지 않으려는 경우를 제외하고 모든 것을 선택하는 방법에 대한 기사가 있습니다 특정 열 here. 두 사람을 함께 모으는 방법을 알아낼 수 있습니다.
편집 : 경우 Y에서
은 null로 설정 될 수 있으며 합법적 인 바 Y 널 (null)과 비 ligitimate foo는 y를 널 (null)이 무엇인지를 구분하는 것이 중요합니다, 당신은 대신을 시도 할 수 있습니다 :
SELECT 'foo' AS from_table, *, NULL::int AS y
FROM ONLY foo
UNION
SELECT 'bar' AS from_table, *
FROM bar;
그런 다음 코드 끝에서 from 테이블 열을 사용하여 어디에서 왔는지 처리하고 어떤 null 값이 합법적인지 아닌지를 알 수 있습니다.
- 1. 가상 자식 필터를 부모 테이블과 비교하면
- 2. 자식 테이블 필터에 따라 부모 테이블에서 레코드 선택
- 3. 엔티티에 하나의 쿼리 linq에 부모 테이블과 자식 테이블로드
- 4. ADO.NET 엔터티 데이터 모델이 동일한 테이블에서 부모 - 자식 관계를 처리합니다.
- 5. 부모 자식 Perl 데이터 구조
- 6. 두 테이블에서 데이터 선택
- 7. ado.net 엔티티 데이터 모델 부모 자식 관계
- 8. "부모 ID"로 정렬 된 하나의 테이블에서 데이터 선택
- 9. mysql : 자식 테이블과 일치하지 않는 부모 테이블에서 행을 삭제하기 위해 FK 사용
- 10. 부모 개체 모음에서 모든 자식 검색
- 11. 단일 쿼리에서 자식 테이블과 부모 테이블의 레코드를 삭제하는 방법은 무엇입니까?
- 12. 부모 - 자식 방법을 사용하여 링크에서 텍스트 선택
- 13. 부모 자식 테이블 대안
- 14. 부모 자식 형식으로 데이터 형식 변환 자동화
- 15. 데이터 테이블에서 다중 선택 정보
- 16. 부모 자식 관계를위한 MVC 라우팅
- 17. NHibernate에 부모/자식 관계
- 18. SQL 쿼리에서 부모 - 자식 데이터 반환
- 19. 마스터 테이블과 자식 테이블 병합
- 20. 간단한 목록에서 부모/자식 데이터 구조 만들기
- 21. 렌더 부분 뷰 데이터 부모/자식
- 22. XamDataGrid - 부모 자식 계층 데이터 필터링
- 23. 자식 창에서 부모 창에 데이터 저장 하시겠습니까?
- 24. 동일한 데이터 격자에 부모/자식 행 표시
- 25. 동일한 테이블에서 부모 자식 관계를 찾으려면 Mysql Self Join을 입력하십시오.
- 26. 데이터 테이블과 검색 테이블을 동시에 계단식으로 삭제하십시오.
- 27. Postgres 데이터베이스간에 데이터 복사
- 28. Postgres + 캐시에서 쿼리 선택
- 29. mysql, 테이블에서 모두 선택
- 30. 젠드 프레임 워크 : 다른 테이블에서 데이터 선택
테이블 구조, 예제 행 및 원하는 결과를 게시하십시오. – bos
jQuery는 어디에서 시작됩니까? – Henry