2017-07-07 54 views
0

我有3個不同的SQL表與我一起工作。下面是表的樣子:從表A中選擇行,其中字符串存在於表B或表C中的相似列中

Master Accounts 
--------------- 
CustomerNumber PK 
CompanyName 
More Columns... 

Bill Tos 
--------------- 
MasterCustomerNumber FK 
CompanyName 

Ship Tos 
--------------- 
MasterCustomerNumber FK 
CompanyName 

我想寫一個MS SQL查詢,返回在公司名稱中包含的任何三個表的字符串「海士」主賬戶表中的所有列。

這裏是我當前的SQL:

SELECT DISTINCT 
    MA.* 
FROM MasterAccounts MA 
LEFT JOIN BillTos BT 
    ON MA.CustNo = BT.MasterCustNo 
LEFT JOIN ShipTos ST 
    ON MA.CustNo = ST.MasterCustNo 
WHERE MA.CompanyName LIKE '%ama%' OR BT.CompanyName LIKE '%ama%' OR ST.CompanyName LIKE '%ama%' 

我的目標是獲得其中收單方或SHIPTO公司名稱含有「AMA」所有主賬戶。

+4

你面臨的困難是什麼? –

+0

我用我當前的查詢查詢我的數據庫,但它沒有帶回我期望的結果。我覺得我的連接有問題。它看起來正確嗎? – Aaron

+4

查詢看起來不錯。你能分享一些樣本數據和你期待的結果嗎? –

回答

0

我讀你的意見,也許這得更快:

select MA.* from 
MasterAccounts MA 
join 
(select CustNo nmb from MasterAccounts where CompanyName LIKE '%ama%' 
union 
select MasterCustNo nmb from BillTos where CompanyName LIKE '%ama%' 
union 
select MasterCustNo nmb from ShipTos where CompanyName LIKE '%ama%') num on (num.nmb = MA.CustNo) 

,如果你需要更多的企業也許你在較低的情況下使用公司名稱...

*如果是小錯誤查詢我」對不起 - 我讀了這個快速....

相關問題