我有两个表他们有关联(tb_ad的外键是sid与表tb_sort关联)
tb_ad
(
id int,
atitle varchar(255),
sid int
)tb_sort
(
sid int,
sname varchar(255),
sparentid int
)(其中tb_sort的sparentid=0时是代表一级类)
如我现在插入数据
tb_ad
-------------------------
id atitle sid
1 'title1' 2tb_sort
-------------------------
sid sname sparentid
1 .net技术 0
2 asp.net 1
3 java技术 0
4 jsp 3我现在执行这样的sql语句select count(*) from [tb_ad]
inner join [tb_sort] on tb_ad.sid=tb_sort.sid
where (tb_sort.sid=1)结果怎么会是0而不是1呢???
tb_ad
(
id int,
atitle varchar(255),
sid int
)tb_sort
(
sid int,
sname varchar(255),
sparentid int
)(其中tb_sort的sparentid=0时是代表一级类)
如我现在插入数据
tb_ad
-------------------------
id atitle sid
1 'title1' 2tb_sort
-------------------------
sid sname sparentid
1 .net技术 0
2 asp.net 1
3 java技术 0
4 jsp 3我现在执行这样的sql语句select count(*) from [tb_ad]
inner join [tb_sort] on tb_ad.sid=tb_sort.sid
where (tb_sort.sid=1)结果怎么会是0而不是1呢???
inner join [tb_sort] on tb_ad.sid=tb_sort.sid
where (tb_sort.sparentid=1) orselect count(*) from [tb_ad]
inner join [tb_sort] on tb_ad.sid=tb_sort.sid
where (tb_ad.id=1)
你的
tb_sort.sid=1 且 tb_ad.sid=tb_sort.sid 则 tb_ad.sid=1 显然你的tb_ad里没有sid=1的,所以就是0了。
你是不是要:
select count(*) from [tb_ad]
inner join [tb_sort] on tb_ad.sid=tb_sort.sid
where (tb_ad.id=1)
?
第一步:
select * from [tb_ad]
inner join [tb_sort] on tb_ad.sid=tb_sort.sid
结果因该是
id atitle sid sid sname sparentid
-- ------- --- --- ------ ------
1 'title1' 2 2 asp.net 1
然后呢,你加了一句:where (tb_sort.sid=1) 请问你的结果集有 tb_sort.sid=1 的吗?
没有,为什么要返回1?