select distinct(www.TagID),www.SiteID,TagType,www.EnterTime,
(case when www.TagType =1 then car_name.VehicleID  
else man_name.Name end)
as Name_VehicleID  from www,car_name,man_name
where (www.TagID = car_name.TagID  
or www.TagID = man_name.TagID)
and www.SiteID =1
这段是一条sql语句   where以后的语句,执行不错,但是不是我想要的结果,请高手帮忙!
        
    我本来是想同过,where,执行www.TagID = car_name.TagID  ,或者执行www.TagID = man_name.TagID 的,
但是,现在的问题,是必须 man_name,car_name 中都必须有数据,才可以有数据出来。如果任何一张表中没有数据那么
就不能读出数据。
                   请高手指教小弟我哪里写错了,或者是哪里需要改一下,我怎么感觉,OR 变成了AND在用啊!不懂很迷惑,高手帮忙。在线等待!
            

解决方案 »

  1.   

    因该用LEFT JOINselect distinct(www.TagID),www.SiteID,TagType,www.EnterTime,
    (case when www.TagType =1 then car_name.VehicleID   
    else man_name.Name end)
    as Name_VehicleID from www left join car_name on www.TagID = car_name.TagID
    left join man_name on www.TagID = man_name.TagID
    where www.SiteID =1
      

  2.   

    select distinct(www.TagID),www.SiteID,TagType,www.EnterTime,
    (case when www.TagType =1 then car_name.VehicleID   
    else man_name.Name end)
    as Name_VehicleID from www left join car_name on www.TagID = car_name.TagID
    left join man_name on www.TagID = man_name.TagID
    where www.SiteID =1
      

  3.   

    where (www.TagID = car_name.TagID   and www.SiteID =1 )
    or (and www.SiteID =1 and www.TagID = man_name.TagID)?
      

  4.   

    select distinct(www.TagID),www.SiteID,TagType,www.EnterTime,
    (case when www.TagType =1 then car_name.VehicleID   
    else man_name.Name end)as Name_VehicleID 
    from www
    left join car_name on www.TagID = car_name.TagID
    left join man_name on www.TagID = man_name.TagID
    where 
    and www.SiteID =1
      

  5.   

    1楼正解,需要用到 left join
      

  6.   

    现在的问题,是必须 man_name,car_name 中都必须有数据,才可以有数据出来。如果任何一张表中没有数据那么就不能读出数据。 这句话很费解