2012-09-26 180 views
0

我是SQL新手,請耐心等待。根據第一個表格的第二個數值加入兩個表格

我正在使用兩個沒有公共字段的表。我試圖創建一個基於兩個表的簡單層次結構是這樣的:

Table 1. 

Cul 1 Cul 2 
============== 
S10000 Name 
S20000 Name 1 
S30000 Name 2 
S40000 Name 3 

Table 2 

Cul 1 Cul 2 
===================== 
A10000 Test 
A10001 Test 123 
A20000 Test 1 
A20001 Test 999 
A30000 Test 2 
A30002 Test 5555 
A40000 Test 3 
A40006 Test 84384848 

我想編寫一個查詢,從表1基於第一列匹配數值顯示「姓名」字段從表1 & 2.

所以,如果表1是S10000,顯示A1000 - 測試

這可能嗎?

謝謝

+0

當你說「的基礎上,從表1和2匹配在第一列中的數值」,你怎麼能指望這樣做,當該號碼相匹配的非?即使在您的示例結果中,S10000和A1000也會關閉一個0. – northpole

+0

我不知道此事,但表1和2中的字符長度相同。我只是做了調整。 – Zhenya

+0

@ Zhenya您使用的是什麼RDBMS? SQL Server,MySQL,Oracle? – Taryn

回答

2
SELECT 
    t2.* 
FROM Table1 t1 
INNER JOIN Table2 t2 on SUBSTRING(t1.Cul1,2,LEN(t1.Cul1)-1)=SUBSTRING(t2.Cul1,2,LEN(t2.Cul1)-1) 
+0

我剛剛檢查,並沒有得到所有的價值。代碼從某些原因跳過了一些值。 – Zhenya

+0

例如,以A3或A4開頭的表格2值將被忽略。 – Zhenya

+0

請忽略我的評論。我有相反的順序值 – Zhenya

5

你的要求是不完全清楚,但它聽起來像你想的:

select t1.col1 t1Name, 
    t1.col2 t1Value, 
    t2.col1 t2Name, 
    t2.col2 t2Value 
from table1 t1 
inner join table2 t2 
    on substring(t1.col1, 2, 1) = substring(t2.col1, 2, 1) 

看到SQL Fiddle with Demo

編輯,你也可以使用:

select t1.col1 t1Name, 
    t1.col2 t1Value, 
    t2.col1 t2Name, 
    t2.col2 t2Value 
from table1 t1 
inner join table2 t2 
    on substring(t1.col1, 2, len(t1.col1)) 
     = substring(t2.col1, 2, len(t2.col1)); 
+0

查詢的另一個問題是,值增加了一倍。因此,不要爲兩個表的組合返回單一描述。我看到了多個值。 – Zhenya

+0

你能解釋一下你的意思嗎? – Taryn

+0

在表1中,我只有7行,這就是我將兩張表合併後的所有結果。在我的連接表中,我有15個不同的值,有些是重複的。例如 - S10000名稱顯示4次,而不是隻顯示一次。 – Zhenya

0

如果您確定第一位數字是數字並且遵循b y中的數值,則下面應該工作

SELECT A.cul1,B.cul2 
FROM dbo.Table1 A, dbo.Table2 B 
WHERE substring(A.cul1,2,len(A.cul1))= substring(B.cul1,2,len(B.cul1)) 
+0

謝謝拉馬克它的工作就像魔術! – Zhenya

相關問題