我有两个表 A表B表
B表有两个字段fromuid 和touid 都关联到A表的uid我想取出B表数据并且fromuid 和touid左联接到A表 请问SQL语句该怎么写?

解决方案 »

  1.   

    select *
    from b left joni a on b.fromuid=a.fromuid and b.touid=a.touid
      

  2.   


       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    回楼上
    你可能误会我意思了
    简化A表(members)结构:
    uid(int 自增) username(char 30)  face(char 20)简化B表(comments)结构:
    cid(int 自增) fromuid(int) touid(int) content(varchar 1000)我想取出B表数据并且fromuid touid关联到A表的用户信息
      

  4.   

    贴出你的CREATE TABLE语句,INSERT 语句。
      

  5.   


    --
    -- 表的结构 `members`
    --CREATE TABLE IF NOT EXISTS `members` (
      `uid` int(12) NOT NULL AUTO_INCREMENT,
      `username` char(30) NOT NULL,
      `face` char(20) NOT NULL,
      PRIMARY KEY (`uid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;--
    -- 转存表中的数据 `members`
    --INSERT INTO `members` (`uid`, `username`, `face`) VALUES
    (1, 'sky', 'a.jpg'),
    (2, 'testu', 'b.jpg'),
    (3, 'smile', 'c.jpg'),
    (4, 'colorful', 'd.jpg');
    --
    -- 表的结构 `comments`
    --CREATE TABLE IF NOT EXISTS `comments` (
      `cid` int(11) NOT NULL AUTO_INCREMENT,
      `fromuid` int(11) NOT NULL DEFAULT '0',
      `touid` int(11) NOT NULL DEFAULT '0',
      `content` varchar(1000) NOT NULL,
      PRIMARY KEY (`cid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;--
    -- 转存表中的数据 `comments`
    --INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES
    (1, 1, 2, 'aaaaaaaaaaaa'),
    (2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');目的是要取出comments表的数据并且fromuid touid联接到members表INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES
    (1, 1, 2, 'aaaaaaaaaaaa'),
    (2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');
      

  6.   

    上面回复最后面的INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES
    (1, 1, 2, 'aaaaaaaaaaaa'),
    (2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');
    是笔误 不用看
      

  7.   

    select  *
    from  b
    where fromuid  in (select uid from A)
      

  8.   

    楼主为什么不肯把你期望的结果是什么贴出来? 而是非要让别人来猜?!mysql> select *
        -> from comments c ,members a,members b
        -> where c.fromuid=a.uid and c.touid=b.uid;
    +-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+
    | cid | fromuid | touid | content               | uid | username | face  | uid | username | face  |
    +-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+
    |   1 |       1 |     2 | aaaaaaaaaaaa          |   1 | sky      | a.jpg |   2 | testu    | b.jpg |
    |   2 |       2 |     3 | bbbbbbbbbbbbbbbbbbbbb |   2 | testu    | b.jpg |   3 | smile    | c.jpg |
    +-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+
    2 rows in set (0.05 sec)mysql>
      

  9.   

    呵呵,提问也有技巧
    select * from comments a inner join members b
    on a.fromuid=b.uid
    inner join members b on a.touid=b.uid;