比如商品分类表:type(id,name)有两条记录{(1 '服装'),(2 '手机')}
商品表:product(id,name,typeid)记录为{(1 '诺基亚6030' 2),(2 'n97' 2)}
用这个SQL语句查的话
select count(*),t.* from type t left outer join product p on t.id = p.typeid group by t.id
count(*) id name
1 1 服装
2 2 手机
可是服装这个类下是没有商品的,应当count数为0,但这里却是1
不知道有哪位高手可以解决这个问题
商品表:product(id,name,typeid)记录为{(1 '诺基亚6030' 2),(2 'n97' 2)}
用这个SQL语句查的话
select count(*),t.* from type t left outer join product p on t.id = p.typeid group by t.id
count(*) id name
1 1 服装
2 2 手机
可是服装这个类下是没有商品的,应当count数为0,但这里却是1
不知道有哪位高手可以解决这个问题
select count(*),t.* from type t inner join product p on t.id = p.typeid group by t.id
select count(*),t.* from type t left outer join product p on t.id = p.typeid group by t.id
count(*) id name你这个是左外连接。就算商品表里不存在服装这个类的记录。二表左外连接时依然会有记录只是记录以
type.id type.name product.id product.name product.typeid
1 服装 null null null这样存在。所以你count(*)它时。当然等于1了。
你可以先不count试下左外连接的结果就知道了。
from product p right join type t
on p.typeid=t.id
group by t.id;