2016-09-06 40 views
0

表的SQL表查詢我有Table_A有一欄:「全名」,columnB,..等欄目對於沒有直接的聯繫

我有Table_B有列:「名字」,「姓氏」, 'Job_OID'

很明顯,如果我們加入FirstNameLastName的字符,它匹配Full_Name

這是這兩張表格之間唯一共同的東西!

問題:當Table_A中的全名是「John Smith」時,我想從table_B中獲取他的Job_OID。

用簡單的語言, 從table_B中選擇job_oid其中('FirstName'+'LastName')= Table_A.FullName;

+1

有什麼不對您的查詢?也許只是在連接中連接一個空格,並引用這些字段本身,而不是字符串:'where(FirstName +''+ LastName)= Table_A.FullName;'這當然不是最優的,但是給定數據,這可能是最好的你必須瞄準。 – JNevill

+1

標記您正在使用的dbms。那裏有一些非ANSI SQL。 – jarlh

回答

1

試試這個:

SELECT job_oid 
FROM table_B 
JOIN Table_A ON Table_A.FullName = Table_B.FirstName+' '+TableB.LastName 
0

我想,你一定正常化您的數據庫,但如果它是不可能的,你可以寫下面的查詢:

SELECT B.* 
FROM Table_B B 
WHERE EXISTS 
    (SELECT 'PERSON' 
    FROM Table_A A 
    WHERE B.FirstName + ' ' + B.LastName = A.FullName) 

可以使用,否則, JOIN命令是這樣的:

SELECT B.* 
FROM Table_B B 
JOIN Table_A A 
    ON B.FirstName + ' ' + B.LastName = A.FullName 

因此,以這種方式鏈接兩個表有兩個f的級聯ields(名字和表-B的名字)跟全名存儲在表-A

1

你也可以這樣寫查詢:

SELECT B.job_oid 
FROM Table_A A 
INNER JOIN table_B B ON A.FullName = CONCAT(B.FirstName, ' ', B.LastName)