我有两个表他们有关联(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呢???

解决方案 »

  1.   

    select count(*) from [tb_ad] 
    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) 
      

  2.   


    你的
    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) 
    ?
      

  3.   


    第一步:
    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?