2015-01-14 81 views
-1

我有三個表 公司車輛關係
在公司表有兩列一個是公司ID和二是公司名稱和數據是這樣的SQL獲得從父記錄,其中父表有關係和有共同的項目與其他家長

ID    CompanyName 

101    CompanyOne 
102    companyTwo 
103    CompanyThree 

車輛表有三列

ID       CompnayID          Vehicle 
    001       101-           BUS 
    002       102           BUS 
    003       103           Truck 
    004       103           Cycle 
    005       104           Bike 
    006       102           Truck 
    007       101           truck 

表的關係有4列

RelationshipID CompanyOneID  Relationship Name CompanyTwoID 
    1      101   Collaborate    102 
    2      102   Collaborate    101 
    3      104   Collaborate    102 
    4      103   Collaborate    104 

現在,我想要的是,讓所有這些公司的名字和車輛名稱,其中公司有什麼「協作」關係(可能還有其他類型的關係也是如此)有一般車輛名稱,我也想有單一記錄如公司101與102有關係並且有通用車輛,同樣公司102在關係表中也有提及與公司101有關係,這裏我只希望一方匹配公司101或公司102或公司102至公司101。

如 結果將是

CompanyOne     CompanyTwo     Vehicle 
101       102      BUS 
101       102      Truck 

注: - 公司104有一些其他的公司合作,但他們沒有共同的車輛 及公司103有共同的車輛,但它們不與合作與之合作的同一家公司,爲什麼我不想選擇它。

我使用SQL SERVER

+0

不要只張貼問題,而不表明你已嘗試自己解決問題的一些最小的努力計算器。我們不在這裏爲你做你的工作。向我們展示一些代碼,到目前爲止您嘗試了什麼?你得到了什麼輸出或者得到了什麼錯誤信息? – Dan

+0

我想我表達我的問題的方式..表明我正在努力。並進一步更多,如果有任何想法如何解決我沒有發佈在這裏..。 –

+0

我只是要求一個或兩個示例SELECT查詢,顯示你實際上已經試圖合併表中的數據。一旦你真正坐下來嘗試爲你的問題編碼解決方案,你會驚訝於你得到多少。如果您根本不知道如何編寫任何SQL,那麼您應該閱讀它,然後在代碼出現特定問題時再回到我們。 – Dan

回答

0

像下面一個簡單的查詢應該做你想要什麼:

SELECT CompanyOneID, CompanyTwoId, V1.Vehicle 
FROM Relationsships 
INNER JOIN Vehicles V1 ON V1.CompanyId = CompanyOneID 
INNER JOIN Vehicles V2 ON V2.CompanyId = CompanyTwoID 
WHERE [Relationsship Name] = 'Collaborate' AND V1.Vehicle = V2.Vehicle 

如果公司1相關公司2,反之亦然,而你只想要顯示的每個一旦關係,你需要這樣的事情:

SELECT DISTINCT 
    CASE WHEN CompanyOneID < CompanyTwoID THEN CompanyOneID ELSE CompanyTwoID END, 
    CASE WHEN CompanyOneID > CompanyTwoID THEN CompanyOneID ELSE CompanyTwoID END, 
    V1.Vehicle 
FROM . . . /* Rest of the query exactly the same as above */ 
+0

謝謝我會應用這個想法,並會很快通知..以及感謝..對不起,我試圖保持簡單的問題,這就是爲什麼我可能無法發佈一個很好的問題,反正..我只在這裏發佈時,我卡住了,否則我知道..每個人的時間都很珍貴..再次感謝。 –

+0

是的,沒問題。我只是想告訴你,如果你向我們展示一些代碼,那麼關於stackoverflow的問題會得到更快的回答。我們在這裏得到了很多「做家庭作業」式的問題,所以一個好問題應該總是顯示出一些努力,最好通過張貼迄今爲止嘗試過的代碼(或者只是一些類似的簡化代碼)。 – Dan

+0

謝謝..我下次將銘記下一次我的問題。 –

相關問題