2016-08-01 38 views
-2

我想编写一个SQL查询,该查询应该返回在特定城镇中教授特定主题的导师总数。SQL查询没有给出确切的结果

这是我的查询

SELECT COUNT(*) 
FROM `tutor_main` tm 
    JOIN `tutor_subjects` ts ON tm.`tutor_id` = ts.`tutor_id` 
    JOIN `sub_subjects` ss ON ss.`subs_id` = ts.`subs_id` 
    JOIN `town` tt ON tm.`town_id` = tt.`town_id` 
    JOIN `subject_level` sl ON sl.`sub_level_id` = ts.`sub_level_id` 
WHERE ts.`subs_id` = 1 
AND tm.`town_id` = 1 

这里tutor_main作为存储town_id为外键的主表。 sub_subjects作为主题科目表和subject_level表存储科目级别。同样,tutor_subjects表存储tutor_id,subs_id和sub_level_id的键。

这是tutor_subjects表的截图:

enter image description here

注意,town_id所有导师为1

现在,当我运行查询,它给了我8输出。正确的输出应该是5,因为有5个导师正在教ID为1的主题,他们全都来自ID为1的城镇。

请帮助。

+0

你打算自己编写和调试你的任何疑问吗?或者我们是否应该启动发票来涵盖我们正在为你做的工作。 http://stackoverflow.com/questions/38697095/sql-count-function-not-working – RiggsFolly

回答

1
SELECT COUNT(DISTINCT tm.`tutor_id`) 
FROM `tutor_main` tm 
    JOIN `tutor_subjects` ts ON tm.`tutor_id` = ts.`tutor_id` 
    JOIN `sub_subjects` ss ON ss.`subs_id` = ts.`subs_id` 
    JOIN `town` tt ON tm.`town_id` = tt.`town_id` 
    JOIN `subject_level` sl ON sl.`sub_level_id` = ts.`sub_level_id` 
WHERE ts.`subs_id` = 1 
AND tm.`town_id` = 1 
+0

非常感谢你的答案。 –