2013-02-12 2 views
1

1-n 관계로 두 개의 mySql 테이블이 있습니다. 첫 번째 테이블에서 두 번째 테이블의 인스턴스 수를 나타내는 필드를 설정하고 업데이트 된 필드를 유지해야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 두 번째 테이블에 레코드를 삽입/삭제할 때마다 카운터를 업데이트해야합니까? 아니면 자동으로 레코드를 삭제할 수 있습니까?자동으로 mysql 테이블의 1-n 인스턴스 수를 계산하십시오.

+0

'a.id, COUNT (b.id) FROM a, b WHERE b.fkFromA = a.id GROUP BY a.id'가 도움이 될 것입니다. 하지만이 작업은 런타임에 수행되므로 계산에는 시간이 필요합니다. – Najzero

+0

@Najzero에서 제안한 런타임 쿼리가 바람직하지 않은지 확인하십시오.이 쿼리로 뷰를 생성하고 뷰 – Minesh

답변

1

첫 번째 테이블의 필드로 사용하려면 두 번째 테이블에 레코드를 삽입/삭제할 때마다 카운터를 업데이트해야합니다.

데이터를 검색해야하는 경우 두 번째 테이블을 쿼리하여 첫 번째 테이블과 결합하고 첫 번째 테이블의 ID를 필터링 할 수 있습니다. 첫 번째 테이블에서 레코드를 검색 할 때마다 데이터가 필요하지 않고 두 번째 테이블에서 레코드를 삽입/삭제하는 경우이 방법이 더 효율적입니다.

+0

에서 데이터를 가져 오는 것이 좋습니다. 따라서 필드 유형이나 카운트를 가로 채서 업데이트 할 수있는 방법이 없습니다. . 나는 모든 삽입물의 번호를 계산해야한다. 고맙습니다 – AleCat83

0

@Najzero에 의해 제안 런타임 쿼리는 필드 모든 컴 퓨터를 업데이트해야 할 경우도 View

에서 데이터를이 쿼리와 View를 만들고 점점 생각 바람직하지 않은 경우 INSERT 및 DELETE 작업시 Trigger을 만드는 것을 고려할 수 있습니다.

관련 문제