表carinfo
carlicense varchar 20
userid     int 表userinfo
userid     int
username   varchar 10
表 cardinfo
cardtype  varchar 10
cardcode  varchar 10
userid    int 
(一张卡只对一辆车)
以上是表的部分字段 一张卡对应一个人一辆车,当然一个人可能有n张卡n辆汽车 现在我要查 这张卡的全部信息,和对应的人和车子的信息

解决方案 »

  1.   

    Select A.*,B.username,C.carlicense
    From  cardinfo a 
          Inner join userinfo B ON A.UserID=B.UserID
          Inner Join carinfo C On B.UserID=C.UserID
      

  2.   

    INNER JOIN
    LEFT JOIN
    RIGHT JOIN
    FULL JOIN
    希望樓主查下資料,看看這幾個的用法...
      

  3.   

    这样写对不对
    select carinfo.carlicense,aa.cardtype ,aa.username from (select CardInfo.* ,userinfo.username from cardinfo left join 
    userinfo on cardinfo.userid=userinfo.userid) aa left join carinfo on aa.userid= carinfo.userid

    如果对的话 效率如何
      

  4.   

    你如果是想查一张卡的的全部信息,和对应的人和车子的信息,那你查询的关键字段应该是cardcode 吧
    用left join 是可以不写条件的.
    所以我的写法是:
    SELECT carinfo.carlicense,
    cardinfo.cardtype ,
    userinfo.username 
    FROM cardinfo LEFT join
    carinfo LEFT join
    userinfo
    WHERE cardinfo.cardcode = "0001"
      

  5.   

    select c.*
    from
       (select a.userid 
        from arinfo as a,     
            (select userid 
             from userinfo 
             where userid in (select userid  from cardinfo where userid='***')
             )as b
        where a. userid=b.userid   )as c