2010-07-13 3 views
0

그래서, 몇 가지 코드가 도움이 필요해. 난 성장과 성장을 계속하는 어색한 작은 MySQL 테이블이 있습니다.PHP/MySQL 질문, 후자가 더

의 클라이언트의 집합, 특정 국가에서 일부는 I가에 '총'송장이 필요하다고 가정하자

그래서, 두 개의 테이블이 원하는 데이터를 포함 (GST를 계산해야합니다) - 하나 개의 테이블을 ID와 국가가 있습니다 (이 경우 캐나다!). 두 번째 테이블에는 인보이스가 있습니다.이 중 하나의 변수는 table1의 ID이고 다른 변수는 검색 (및 합계)입니다. 분기별로 합산하면 도움이됩니다. 송장은 또한 다음 구문으로 양분합니다 : 2006-06-26 (년 - 월 - 일).

표 1에서 각 클라이언트에 대해 설정된 ID 이름은 다음과 같습니다. id - 숫자입니다. 표 1 국가에서 1-200000 은 : CA

표 2에서 duedates에 대한 변수는 다음과 같습니다 DUEDATE 우리가 필요로 다른 변수는 표 2 중 소계

이다 나는 어느 클라이언트 기본적으로 만 잡아 필요 country CA (table1의 데이터)에 있고 그들의 송장을 합산하십시오.

출력은 다음과 같아야합니다. 1 분기 합계 : $ x, xxx 2 분기 합계 : $ x, xxx 어떻게?

+0

제거 '임의'타이틀로에서 이것은 기술적 인 의미를 가지고있다 –

+0

질문은 분명히 PHP와 관련이 없습니다. –

+0

감사! 수정/설명을 감사하십시오. – David

답변

3

당신은 완전히 MySQL의에서이 문제를 처리 할 수 ​​

SELECT 
    CONCAT('Q', QUARTER(inv.duedate), ' ', YEAR(inv.duedate)) as quarter, 
    SUM(inv.total) as total 
FROM 
    invoices inv 
    LEFT JOIN clients cli ON inv.client_id = cli.id 
WHERE 
    cli.country = 'CA' 
GROUP BY 
    quarter 

출력 :

 
+---------+--------+ 
| quarter | total | 
+---------+--------+ 
| Q1 2010 | 110.40 | 
| Q2 2010 | 10.20 | 
+---------+--------+ 
2 rows in set (0.00 sec) 

내 테스트 데이터 :

 
CREATE TABLE `clients` (
    `id` int(11) NOT NULL, 
    `country` varchar(3) DEFAULT NOT NULL 
); 
INSERT INTO `clients` VALUES (1,'CA'); 

CREATE TABLE `invoices` (
    `client_id` int(11) NOT NULL, 
    `duedate` date DEFAULT NOT NULL, 
    `total` decimal(10,2) DEFAULT NOT NULL 
); 

INSERT INTO `invoices` VALUES (1,'2010-01-01','100.20'),(1,'2010-05-01','10.20'),(1,'2010-03-01','10.20'); 
0
SELECT SUM(subtotal) FROM table1, table2 WHERE table1.id=table2.table1_id AND country='CA' AND duedate > foo AND duedate < foo 

아주 자명 할 것입니다. 두 표를 하나로 결합하고 고객 ID를 일치시켜 행을 결합합니다. 그런 다음 country = 'CA'의 고객 만 선택합니다. 그런 다음 특정 범위의 만기일을 선택합니다. 그런 다음 송장 금액을 합산합니다. 적법한?

클라이언트별로 인보이스를 합산하려면 합계에 table1.id을 선택하고 명세서 끝에 GROUP BY table1.id을 추가하십시오.

+0

대다수의 경우 완벽하게 후자의 'duedate'참조를 뺀 다음과 같아야합니다. AND duedate> $ x <$ x2 단일 양성으로 충분합니다. – David

관련 문제