2016-07-30 49 views
0

我有3頁不同的表SQL查詢選擇四個來自三個表項,如果兩個條目都是平等

1. Table Business 
ID, Name, fk_Input, fk_Output 

2. Table Input 
Id, FK_Business_id, Name 

3. 
Id, FK_Business_id, Name 

我創建了一個SQLFiddle數據庫的例子。

現在只想檢查至極商業有相同的output.name像一些其他商業有Input.name並顯示結果商業名稱和至極的資源可以共享。

因此,對於更好地理解爲例

1. Table Business 
ID, Name, fk_Input, fk_Output 

1, AdventureA, 1,1 
2, BuinsnessB, 2,2 
3, CompanyC, 3,3 

2.Table Input 
Id, FK_Business_id, Name 
1, 1(AdventureA),coal 
2, 1(AdventureA),Air 
3, 2(BusinessB) ,Cooper 
4, 2(BusinessB) ,Power 
5, 3(CompanyC) ,Wood 

3.Table Output 
Id, FK_Business_id, Name 
1, 1(AdventureA), Power 
2, 2(BusinessB) , Cooperbar  
3, 3(CompanyC) , Power 

的結果應該是:

AdventureA has Power for BusinessB 
CompanyC has Power for BusinessB 

或者換句話說,這樣的

BusinessnameOutput, BusinessnameInput, NameInput, NameOutput 

我已經試過

SELECT DISTINCT Business.Name, Output.Name, Input.Name FROM Business, Input, Output 
WHERE Output.Name = Input.Name 

但結果得多排,沒有任何意義

也試過

SELECT Business.Name, Input.Name, Output.Name 
FROM Unternehmen 
INNER JOIN Input ON Input.FK_Business_id, = Business.ID 
INNER JOIN Output ON Output.FK_Business_id = Business.ID 
WHERE Input.Name = Output.Name 

但在任何項目的結果。

查詢幾乎正確的結果是

SELECT Business.Name, Input.Name, Output.Name FROM Business,Input, Output WHERE Input.Name = Output.Name GROUP BY Input.RessourceName 

但它僅顯示一個BUSINESSNAME,而不是兩個businessnames至極具有輸出作爲輸入相同。

不知道我該如何解決這個困境?任何人都有想法,那會很棒。

回答

1

您可以使用內部連接和適當的條件加入

select distinct concat(Business.Name, ' has ', Output.Name, ' for ', Business2.name) 
from Business 
inner join Output on Business.fk_Output = Output.id 
inner join Input on Input.name = Output.name 
inner join Business as Business2 on Input.fk_business_id = Business2.id ; 

http://sqlfiddle.com/#!9/de4efa/6

+0

我認爲作品。非常感謝你。我得到了一個entrie查詢不會顯示,但我認爲會有數據庫上的錯誤。我用一個插入數據庫的新例子測試了你的查詢,它顯示了我想要的結果。謝謝你,那很好。 :) – Sires