I**A 发帖数: 2345 | 1 我又把自己绕糊涂了 (以前装的MYSQL又不知何处)。。
select d.dept_id, d.dept_name, count(*) as numemployees
from department d
left join employee e
where d.dept_id = e.dept_id
group by d.dept_id, d.dept_name
这个query返回的是
1 CS 0 (这儿是0麽????)
2 Physics 3
--------------------
department table
dept_id, dept_name
1, CS
2, Physics
Employee table
Emp_id, dept_id, Emp_name
001, 2, May
002, 2, June
003, 2, July
Left join 的结果应该是如下(还是应该还有一个column e.dept_id???)
d.dept_id, d.dept_name, e.emp_id, e.emp_name
1 CS
2 |
s*****a 发帖数: 3693 | 2 select d left join e on d.dept_id = e.dept_id
【在 I**A 的大作中提到】 : 我又把自己绕糊涂了 (以前装的MYSQL又不知何处)。。 : select d.dept_id, d.dept_name, count(*) as numemployees : from department d : left join employee e : where d.dept_id = e.dept_id : group by d.dept_id, d.dept_name : 这个query返回的是 : 1 CS 0 (这儿是0麽????) : 2 Physics 3 : --------------------
|
I**A 发帖数: 2345 | 3 同学
你这回答的是哪个问题啊?
【在 s*****a 的大作中提到】 : select d left join e on d.dept_id = e.dept_id
|
l*******m 发帖数: 3346 | 4 select d.dept_id, d.dept_name, count(*) as numemployees
from department d
left join employee e
on d.dept_id = e.dept_id
group by 1, 2
;
?
【在 I**A 的大作中提到】 : 我又把自己绕糊涂了 (以前装的MYSQL又不知何处)。。 : select d.dept_id, d.dept_name, count(*) as numemployees : from department d : left join employee e : where d.dept_id = e.dept_id : group by d.dept_id, d.dept_name : 这个query返回的是 : 1 CS 0 (这儿是0麽????) : 2 Physics 3 : --------------------
|
l*******m 发帖数: 3346 | 5 Maybe SS also mean you should change "where" to "on"?
【在 I**A 的大作中提到】 : 同学 : 你这回答的是哪个问题啊?
|
I**A 发帖数: 2345 | 6 啊,对!你是对的。。
这个query结果是什么?
【在 l*******m 的大作中提到】 : Maybe SS also mean you should change "where" to "on"?
|
I*****e 发帖数: 7085 | 7 1 CS 0
2 Physics 3
as you have written
【在 I**A 的大作中提到】 : 啊,对!你是对的。。 : 这个query结果是什么?
|
I**A 发帖数: 2345 | 8 hug
这个count(*)怎么理解?
尽管employee info为null, 可是left join之后还是有一个1 CS的record,咋就会是0
了呢?
【在 I*****e 的大作中提到】 : 1 CS 0 : 2 Physics 3 : as you have written
|
wy 发帖数: 14511 | 9 别理他。他一CEO懂个球啊
【在 I**A 的大作中提到】 : 同学 : 你这回答的是哪个问题啊?
|
s*****a 发帖数: 3693 | 10 当然不是0,如果你用where,那就是精确比较,所以结果是0,因为无人是
dept 1的。如果你用left join,那返回的count应该是1.
如果你想用left join,但同时又想返回0,那就应该用count(e.id)而不是
count(*)
0
【在 I**A 的大作中提到】 : hug : 这个count(*)怎么理解? : 尽管employee info为null, 可是left join之后还是有一个1 CS的record,咋就会是0 : 了呢?
|
g*******f 发帖数: 2590 | 11 星海教主冲出江湖了?
【在 s*****a 的大作中提到】 : 当然不是0,如果你用where,那就是精确比较,所以结果是0,因为无人是 : dept 1的。如果你用left join,那返回的count应该是1. : 如果你想用left join,但同时又想返回0,那就应该用count(e.id)而不是 : count(*) : : 0
|
I**A 发帖数: 2345 | 12 我也是这样理解的。。
你确定不?可怜我没有SQL来测试
【在 s*****a 的大作中提到】 : 当然不是0,如果你用where,那就是精确比较,所以结果是0,因为无人是 : dept 1的。如果你用left join,那返回的count应该是1. : 如果你想用left join,但同时又想返回0,那就应该用count(e.id)而不是 : count(*) : : 0
|