2010-01-15 88 views
0

这里是我的表,这些表亲子表记录 - 构建SQL查询

表名的数据:代码

CID Code 
1 abc 
2 def 
3 xyz 

表名:详细

ID Name CID 
1  a  1 
2  b  2 

结果表:

ID  Code Name 
1  abc  a 
2  abc  Null 
3  def  b 
4  def  Null 
5  xyz  Null 
6  xyz  Null 

我NNED从码表,并针对每一个代码,我不得不从细节表中获取所有的行获得所有记录,如果一些代码有值自己的需要值,如果没有的话空

谢谢

回答

3

听起来你正在寻找的笛卡尔乘积:

SELECT 
    c.CID * d.ID AS ID, 
    c.Code, 
    CASE 
     WHEN c.CID = d.CID THEN d.Name 
     ELSE NULL 
    END AS Name 
FROM Code c 
CROSS JOIN Details d 

虽然笛卡儿积较大的桌子相当缓慢......所以要确保这是你真正想要的。