select s.code, s.id
from subjects s
join courses c on (c.subject = s.id)
group by s.id
having count(*) > 25
except
select s.code, s.id
from subjects s
join courses c on (s.id = c.subject)
join course_staff cs on (cs.course = c.id);
这会返回我想要的结果,但select s.code, s.id
行应该是select s.code, count(*)
。我只是用它作为测试。当我使用示例中的代码时,我得到4个元组,但是当我为s.id
切换count(*)
时,我得到所有带有count的元组>来自主题表的25。有没有办法只显示示例中的代码返回的计数结果?
答案 0 :(得分:0)
尝试这样的事情
$(document).ready(function(){
$(document).on('change', 'select', function(){
var optVal = $(this).val();
var id = $(this).attr('id');
$.ajax({
method: "GET",
url: "optiondetails.php",
data: {q:optval, tag_id:id},
cache: false
}).done(function(response){
console.log(response);
});
});
});
两个表(t1,t2)的左连接,对t2列进行空检查,将选择表t1的所有行,其中行与表t2不匹配。
答案 1 :(得分:0)
可能是因为当你将s.id替换为count(*)时,你的except子句无效。我认为你应该以某种方式将你的except子句合并到查询本身。
如果我正确阅读您的查询,那么这应该有效:
select s.code, count(*)
from subjects s
join courses c on (c.subject = s.id)
where c.id not in (select cs.course from course_staff cs)
group by s.id
having count(*) > 25;