2013-10-16 2 views
0

저는 SQL에 익숙하지 않고 한 번에 여러 테이블을 사용하는 방법을 이해하는 데 어려움이 있습니다. 이 같은MySQL이 별도의 테이블에서 열을 추가했습니다.

Table1 
| ID | Type | 
| 1 | A | 
| 2 | B | 
| 3 | C | 
| 4 | D | 

그리고 하나 :

Table2 
| ID | Qty | 
| 1 | 20 | 
| 3 | 40 | 
| 3 | 10 | 
| 2 | 30 | 
| 4 | 20 | 
| 1 | 10 | 

내가 각 ID의 합계 수량을 표시하여 유형을 정렬 할

는이 같은 테이블이있다. 내가 수행하여 ID별로 정렬 할 수 있습니다이 잘 작동

SELECT ID, SUM(Qty) FROM Table2 GROUP BY ID; 

, 나는 내가 무엇을해야 얻을 :

| ID | Qty | 
| 1 | 30 | 
| 2 | 30 | 
| 3 | 50 | 
| 4 | 20 | 

그래서 지금은 유형별로 그룹에 시도하고 그것이 작동하지 않습니다. 내가하고 있어요 :

| Type | Qty | 
| A | 130 | 
| B | 130 | 
| C | 130 | 
| D | 130 | 

그래서 분명히 그것은 단지 전체 열을 합산하고 각 유형에 대한 결과를 표시하는 것 :

SELECT Type, SUM(Qty) FROM Table1, Table2 GROUP BY Type; 

내 출력 존재를 끝납니다. 누군가 내가 이것을 올바르게 어떻게 설명 할 수 있습니까?

답변

0

이 밖으로 시도 :

SELECT t1.type, SUM(t2.qty) qty FROM table1 t1 
JOIN table2 t2 ON t1.id = t2.id 
GROUP BY t1.type 

당신은 내부는 테이블 간의 조인이 필요합니다. FROM Table1, Table2을 사용하면 실제로 table1의 모든 값을 table2의 모든 값과 일치시킵니다. 그래서 그 숫자를 얻습니다.

0
SELECT T1.Type, SUM(T2.Qty) FROM Table1 T1, Table2 T2 where T1.ID=T2.ID GROUP BY T1.Type; 

이렇게하면됩니다.

0

문제는

select * from table1, table2 

은 두 테이블의 Cartesian 제품을 반환하는 것입니다. count(table1) x count(table2) 개의 행을 포함하며, 4 x 6 = 24 행을 입력하십시오. 이것은 당신이 원하는 것이 아닙니다.

  1. 이 조건을 추가합니다 : select * from table1, table2 where table1.id = table2.id
  2. 사용 조인 :

    는 두 가지 해결책이 있습니다 select * from table1 inner join table2 on table1.id = table2.id

이 선호되는 방법이며, 더 possibilites을 제공하는 결합합니다.

Learn more about joins

관련 문제