2010-01-19 80 views
0

可能重复:
Parent Child table record - Building SQL query亲子表记录 - 构建SQL查询

这里是我的表,这些表的数据

表名:代码

CID  Code 
1  abc 
2  def  
3  xyz 

T能够名称:详细

ID Date  Value1 CID 
1 1/1/2009 12  1  
2 1/1/2009 25  2 
3 1/1/2009 18  3 
4 1/2/2009 36  1 
5 1/2/2009 45  2 
6 1/3/2009 19  1 

合力表:

Date  Value1 CID  Code 
1/1/2009 12  1  abc 
1/1/2009 25  2  def 
1/1/2009 18  3  xyz 
1/2/2009 36  1  abc 
1/2/2009 45  2  def 
1/2/2009 Null 3  xyz 
1/3/2009 19  1  abc 
1/3/2009 NUll 2  def 
1/3/2009 Null 3  xyz 

我需要从代码表,并针对每一个代码,我必须从细节表中获取所有的行获得所有记录,如果一些代码具有价值的需求值,如果没有的话空

感谢

+0

@OMG;它不重复,数据不同。 plz检查谢谢 – 2010-01-19 05:56:07

+0

@OMG小马:同意 – gbn 2010-01-19 05:57:13

+1

@穆罕默德:不同的数据或不同,它几乎是相同的结构*和相同的请求* – gbn 2010-01-19 05:58:08

回答

2

@Muhammad Akhtar,看看这个。让我知道它是否有帮助

DECLARE @Code TABLE(
     CID INT, 
     Code VARCHAR(10) 
) 

INSERT INTO @Code SELECT 1,'abc' 
INSERT INTO @Code SELECT 2,'def'  
INSERT INTO @Code SELECT 3,'xyz' 

DECLARE @Details TABLE(
     ID INT, 
     Date DATETIME, 
     Value1 INT, 
     CID INT 
) 

INSERT INTO @Details SELECT 1,'1/1/2009',12,1   
INSERT INTO @Details SELECT 2,'1/1/2009',25,2 
INSERT INTO @Details SELECT 3,'1/1/2009',18,3 
INSERT INTO @Details SELECT 4,'1/2/2009',36,1 
INSERT INTO @Details SELECT 5,'1/2/2009',45,2 
INSERT INTO @Details SELECT 6,'1/3/2009',19,1 

SELECT v.Date, 
     d.Value1, 
     v.CID, 
     v.Code 
FROM (
      SELECT DISTINCT 
        d.Date, 
        c.CID, 
        c.Code 
      FROM @Details d, @Code c 
     ) v LEFT JOIN 
     @Details d ON v.CID = d.CID 
        AND v.Date = d.Date 
+0

我现在无法检查,这是我的个人电子邮件。稍后我会回复。 – 2010-01-19 11:47:49

1

您需要的代码表和明细表之间的LEFT JOIN,由p所示结果中缺少数据的可能性。最后的查询留作练习,因为这看起来完全像练习。

+0

@Mhamhammad看起来你的教授找到了你。 – AaronLS 2010-01-19 06:29:10

+0

不,它不工作... – 2010-01-19 06:49:20

2
SELECT t.* , d.value1 
FROM (SELECT * FROM ((SELECT DISTINCT date FROM details) t CROSS JOIN code)) t 
     LEFT JOIN details d ON t.cid = d.cid and t.date = d.date 
ORDER BY date, cid 
+0

谢谢,它的工作正常。 – 2010-01-20 07:56:38