2010-01-19 74 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