두 테이블 table1과 table2가 있습니다. 나는 주제의 해마다 분포를 원한다. 주제 데이터를위한 두 번째 테이블을 만들었습니다. 임의의 테이블, table1 및 table2를 만들었습니다.여러 테이블에서 데이터를 가져 오기위한 MySql 쿼리
tabel1
id | year
1 | 2001
2 | 2003
3 | 2001
4 | 2002
5 | 2001
나는, 공유 "ID"항목에 대한
table2
id | topic | subtopic
1 | sport | volley
1 | water | ok
1 | stock | apple
2 | stock | us
2 | stock | pine
3 | world | uk
3 | water | salt
4 | water | sweet
4 | world | ep
5 | sport | volley
5 | stock | apple
5 | stock | pine
TOP 범주 (= 1,2,5 3) 주식이고, 물 (= 1,3,4 세)와 두 번째 테이블이 스포츠 (2 = 1.5), 세계 (2 = 2,4)
그리고, 내가 너무 내 출력 데이터
stock | water
----------------
2001 2 | 2
2002 0 | 1
2003 1 | 0
지금까지 일 것입니다 만 정상이 "항목"데이터를 원하는 말할 수 , 나는 그것을 위해 할 수 있었다. 개별 주제
SELECT table1.year AS YEAR, COUNT(DISTINCT table2.id) AS lcount
FROM table1, table2
WHERE topic = 'stock'
AND table1.id = table2.id
GROUP BY YEAR
주제 만 4 국한되지 않습니다, N-다른 주제있을 수 있습니다. 그래서, n 개의 다른 주제가 발견되어야합니다. 나는 그들에게서 정상 2를 골라 내야한다.
그리고 당신이 가지고있는 코드를 참조하십시오 : 당신은 값이나 반환됩니다 알 수없는 주제의 알 수없는 번호가있는 경우
는, 당신은 결과를 얻기 위해 동적 SQL을 사용해야합니다 지금까지 해봤습니까? .. – dbf
이것은 group by 및 having 절에 대한 작업과 같습니다. 당신은 그것들을 조사해야합니다. – usumoio
MySQL에는 내장 피벗 연산자가 없으므로 원하는 열을 미리 알지 못하면 피벗 테이블을 만들 수 없습니다. – Barmar