我有3個表如何結合三個表導致一個SQL查詢
TABLE "TUTOR"
TUTOR_ID NMAE
---------------
1 N1
2 N2
3 N3
4 N4
TABLE "TUTOR_SETTING"
TUTOR_ID MAX_STU_NUM
----------------------
1 5
2 6
TABLE "STU_TUTOR_MAPPING"
----------------------
STU_ID TUTOR_ID
A 1
B 2
C 1
D 1
,我想combile低於3 SQL到一個SQL:
1. SELECT * FROM TUTOR t1
2. SELECT * FROM TUTOR_SETTING t2 where t2.TUTOR_ID=t1.TUTOR_ID
3. SELECT COUNT(t3.STU_ID) FROM STU_TUTOR_MAPPING t3 WHERE t3.TUTOR_ID=t1.TUTOR_ID GROUP BY T1.TUTOR_ID
和預期的結果: 選擇所有從表「TUTOR」和JOIN「TUTOR_SETTING」中加入「STU_TURTOR_MAPPING」,並在具有相同tutor_id時對「STU_TUTOR_MAPPING」的行進行計數。
TUTOR_ID NAME MAX_STU_NUM TOTAL_STU_NUM
-------------------------------------------------
1 N1 5 3
2 N2 6 1
3 N3 null
4 N4 null
我試着這樣說:
SELECT t1.TUTOR_ID, t1.NAME, t2.MAX_STU_NUM, count(t3.STU_ID)
FROM TUTOR t1
LEFT JOIN TUTOR_SETTING t2 on (t1.TUTOR_ID=t2.TUTOR_ID)
LEFT JOIN stu_tutor_mapping t3 on (t1.TUTOR_ID=t3.TUTOR_ID)
GROUP BY t1.TUTOR_ID, t1.NAME;
但數據庫報告錯誤:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 1 Column: 30
最後,我決心通過谷歌這個問題,這裏是SQL語句:
SELECT t1.TUTOR_ID, t1.NAME, t2.MAX_STU_NUM, t3.stu_allocated
FROM TUTOR t1
LEFT JOIN TUTOR_SETTING t2 on (t1.TUTOR_ID=t2.TUTOR_ID)
LEFT JOIN
(select tutor_id ,count(*) as TOTAL_STU_NUM from stu_turtor_mapping group by
tutor_id) t3 on t3.TUTOR_ID=t1.TUTOR_ID
哪個RDBMS?你想要的輸出是什麼?你有什麼嘗試? – hims056 2013-05-14 07:00:13
你想加入這個表或者你怎麼能指望從這個 – 2013-05-14 07:00:33
這是ORACLE Express數據庫造成的,我想查詢表「家教」,並加入「TUTOR_SETTING」,並加入「STU_TURTOR_MAPPING」,也算「STU_TUTOR_MAPPING」的行時有相同的tutor_id。 – sureone 2013-05-14 07:09:30