2013-07-16 2 views
0

두 개의 데이터베이스 테이블이 있습니다. 그 중 하나에서 셀 중 하나가 다른 테이블의 행에 특정 숫자 예MySQL 하나의 테이블에있는 셀의 데이터베이스 값이 다른 테이블에있는 행의 양으로 계산되었습니다.

예를 들어 표 1에 10 개의 행이있는 경우 표 2의 셀 중 하나가 (2000 x 10)의 합계가되도록합니다.

어떻게하면됩니까?

는 내가 뭘하려고 가상의 회사에 대한 은행 데이터베이스의 종류를 만드는 것입니다 : 내가 달성하기 위해 노력하고 무엇


. 데이터베이스의 테이블 중 하나는 웹 사이트의 양식에서 값을 수집 한 다음이 값을이 테이블에 고정시키고 각 '직원'의 데이터로 표시합니다. 이익, 비용 등.

두 번째 테이블은 전체적으로 회사의 데이터를 작성하는 데 '직원'을 합산합니다.

예.

'직원'테이블에는 '연료비'라는 열이있을 수 있습니다. 회사 테이블에는 모든 직원의 연료비 합계와 동일한 '총 연료 비용'이라는 열이 있으며이 값은 웹 사이트에 표시됩니다.

답변

0

당신은 임시 테이블을 생성하고 행 카운트 기능을 계산 얻을 수 있습니다 :

CREATE TEMPORARY TABLE sum_table ENGINE=MyISAM (SELECT SUM(2000 * COUNT(*)) `total` FROM `other_table`); 

이제 sum_table

+1

하지만 더 많은 행이 다른 테이블에 추가되면 자동으로 값을 편집하고 싶습니다. – Danbyization

+0

이 select 문을 기반으로 임시 테이블로 'other_table'을 만들 수 있습니다. – Stefan

+1

아니면'table'에 트리거를 넣어서'other_table'을 갱신 할 수 있습니다. 개인적으로, 나는 즉시 값을 계산할 것입니다 :'SELECT 2000 * COUNT (*) FROM table'. –

0

가 확실하지 난 당신의 질문을 이해 조회 할 수 있습니다. 그러나 당신이 원하는 무엇인가?

Update table 
    set columnName = SUM(2000 * (select Count(*) from table2)) 
2

는 자동 triggers 또는 절차 SQL (함수, 프로 시저)을 통해 값을 갱신 달성 할 수있다. 특정 RDBM에는 프로 시저 실행시기를 스케줄 할 수있는 에이전트가 있습니다.

MySQL에서 트리거의 예는 다음과 같습니다

CREATE TRIGGER my_table_trig AFTER INSERT ON my_table 
    FOR EACH ROW 
    BEGIN 
    UPDATE my_table_total SET total_rows = (SELECT count(*) FROM my_table)*2000; 
    END; 
+0

태그를 읽으면 RDBMS가 명확하게 지정됩니다. 이것은 또한 대답이 아닌 주석이어야합니다. –

+0

내 대답을 타이핑 할 때 태그를 보지 못했습니다. – enigmasck

+0

PHP 관리자가 어떻게 작동합니까? – Danbyization

1

스프레드 시트로 MySQL을 사용하려고처럼 소리, 그리고 정말 잘못된 접근입니다. select count(*) from table2을 쿼리하고 응용 프로그램에서 2000을 곱하면 필요한 결과가 나온 것입니다.

내 대답은 정말로 다음과 같습니다. "잘못된 질문을하고 있습니다.하고 싶은 것을 다시 생각해보십시오."

수정 된 질문에 따르면, 나는 최신 요약을 유지하기 위해 추가 테이블을 계속 업데이트하지 마십시오. 그럴 필요가 없습니다. select count(*) from detail_table (아마도 WHERE 조건 또는 그와 비슷한 것)과 같이 웹 응용 프로그램의 요약 데이터를보고 싶습니다.

추가 테이블을 유지하는 것보다 필요한 정보를 얻는 것이 훨씬 간단합니다. 세부 테이블의 데이터 양이 많아서 전체가 필요할 때마다 COUNT(*) 또는 유사한 쿼리를 실행하는 것이 엄청난 성능 드래그 일 경우 요약 테이블을 유지해야합니다.

즉, 은 데이터베이스가 일을 정렬하고 요약하는 일을 수행하도록합니다.

+0

나는 스프레드 시트로 사용하려고 노력하고 있다고 생각한다. 나는 무엇을 성취하기를 원하는지, 그리고 그것을 성취 할 수있는 가장 좋은 방법을 말해 줄 수 있니? – Danbyization

+0

'select employeecount from summary_table'은'select count (*) from detail_table'보다 나은 해결책이라고 생각하십니까? 어느 쪽이든 당신은 데이터베이스를 때리고 있지만 후자는 당신이 중복 데이터를 유지하도록 강요하지 않습니다. – catfood

+0

무엇이 ??? @catfood – Danbyization

관련 문제