2011-07-14 37 views
0

編輯:我已經寫了一點錯誤鰓改變我的QSQL Server簡單問題

我與SQL一個新手,我有問答..

我做了2溫度。表。 每個人都有25行。(則DateValue)

我想這2個表中第三個表結合起來.. 第一個表是[從] 第二個表是[轉] ... 兩個表都有不同的價值觀

我想這樣說:

From| To | 
1111|2222 
2222|3333 
3333|4444 

等。

我用這個簡單的查詢

Create Table #T3 
( 
    [From] Datetime 
    ,[To] Datetime 
) 

INSERT Into #T3 
SELECT Distinct #T1.[From], #T2.[To] 
From #T1,#T2 
Where #T1.[From] is not null 
And #T2.[To] is not null 

Select * from #T3 

Drop Table #T3 
Drop Table #T2 
Drop Table #T1 

但我的結果是這樣的

From| To | 
1111|1111 
1111|2222 
1111|3333 
2222|1111 
2222|2222 
2222|3333 

它乘以第二至極的第一場給了我很多更多的記錄回..

任何幫助嗎? 感謝!

+1

您無法提供足夠的信息。 #T1,#T2中有什麼?關鍵是什麼?你究竟想要完成什麼? – Blazes

+0

將支票更改爲eqality檢查:「Where#T1。[From] =#T2。[To]'。你可能根本不需要'DISTINCT'。 –

+0

這兩個表(#T1和#T2)之間的關係是什麼,他們的任何關鍵? – Scorpion

回答

1

的OP的編輯後

,只要你想(這是不完全清楚),這可能工作:

INSERT INTO #T3 
    SELECT #T1.[From] 
     , MIN(#T2.[To]) 
    FROM #T1 
    JOIN #T2 
     ON #T1.[From] < #T2.[To] 
    GROUP BY #T1.[From] 

使用

FROM T1, T2 

結果在所有組合或行T1T2。這就是所謂的跨產品與(正確)與CROSS JOIN使用,就像這樣:

FROM T1 CROSS JOIN T2 

當你想根據條件加入兩個表(而不是得到叉積),您可以使用JOININNER JOIN(這兩個是一回事):

FROM T1 JOIN T2 
    ON T1.[From] = T2.[To] 

將讓你的所有行的組合,其中T1.From比賽T2.To(平等)。我想你想匹配每行T1T2行,其中T2.To只是大於T1.From,所以我使用「小於」<算子,而不是「相等」=算子。

添加了GROUP BYMIN()以從這些行中僅獲得最小的T2.To

+0

THANKYOU完成了這項工作! Thankyou非常感謝 – Gigli

+0

+1,用於計算輸入有限的扭曲問題:D – Jacob

+0

對不起,沒有提供太多的信息。 – Gigli

0

它會這樣做。它會爲表1的每行插入表2的副本,因爲您沒有說明如何解決如何提取所需內容。現在

,從假設和是一樣的..你可以做

INSERT Into #T3 
SELECT Distinct #T1.[From], #T2.[To] 
From #T1 left join #T2 on #T1.[From]=#T2.[To] 
Where #T1.[From] is not null 

如果這個心不是如何你的意思是(雖然在兩列具有相同的價值似乎在這個意義上適得其反),其他什麼你有什麼領域,你會如何將這些線條連接在一起。