日期:2014-05-18  浏览次数:20404 次

基础问题,多表查询
超过3个表以上,每个表都有id列,行数不同,怎样使用join查询我要的结果,我是这样写的

select   a.id,b.*,c.*,d.*   from   a
left   join   b   on   a.id=b.id
left   join   c   on   a.id=c.id
left   join   d   on   a.id=d.id
...

表a中的id是唯一的,但表b,c,d中有可能有重复的id,这样写产生了笛卡尔乘积.
正确的写法是怎样的?

------解决方案--------------------
写得没问题,关键是不知道你要什么样的结果
------解决方案--------------------
upup
------解决方案--------------------
你的意思是不是不要有重复的id的列。而只取到一列,这样不合常理吧。
如果不是要重复的id列,你的写法有点问题,就是你是要有做连接还是内连接,我个人认为你是要内连接的(a表中存在的id,如果b,c,d表中没有相应的id的话就不会有该条记录出现).那就如下的写法:
select a.id,b.*,c.*,d.* from a
inner join b on a.id=b.id
inner join c on a.id=c.id
inner join d on a.id=d.id