2015-09-22 90 views
1

我有一個關於從多個連接的表中獲取數據的問題。 表1保存信息(名稱和數量),表2包含組合。 在表2所述的行包含的ID,其對應於ID的從表1是否可以在同一個表上進行多個連接?

我嘗試基於相應的ID的表,以得到信息表1的2

表1

Id | Name | Amount 
-------------------- 
4 | Test 1 |  50 
5 | Test 2 |  60 
6 | Test 3 |  70 
7 | Test 4 |  80 

表2

id | PriceId | MaterialId | ServiceId 
------------------------------------- 
1 |  4 |   5 |   6 
2 |  4 |   5 |   7 

查詢

爲了得到一個想法是什麼我力爭達到:

SELECT * FROM Table1 a 
LEFT JOIN Table2 b ON a.Id = b.PriceId 
LEFT JOIN Table2 c ON a.Id = c.MaterialId 
LEFT JOIN Table2 d ON a.Id = d.ServiceId 
GROUP BY a.Id 

所以我嘗試在表2中得到從表1與編號的對應名稱和金額,因此:

當我選擇了從表2 ID 1然後我試圖得到如下結果:

Table 2 with ID 1: PriceId = 4, MaterialId = 6, ServiceId = 6 
Table 1: Test 1, Test 2, Test 3 

由於PriceId 4與測試1相對應,且MaterialID 6與測試2等對應。

希望以上是顯而易見的。任何幫助表示讚賞!

+0

之一中完成了這項工作,並且您已經更新了一個示例,分享了您遇到的問題。 –

+1

請指定您的確切所需輸出。 –

+0

對於我不清楚的問題,我很抱歉。首先,查詢沒有給出所有結果(只有test1和test2),並且在一些修改後,它給出了一行結果(這是不可取的)。 解決方案就是你的答案,XL螞蟻。謝謝。 –

回答

2

看來你是從錯誤的方向接近它。你真正想要的是:

SELECT t2.PriceId AS PriceId, 
    t2.ServiceId AS ServiceId, t1p.Name AS PriceName, 
    t1m.Name AS MaterialName, t1s.Name AS ServiceName 
FROM Table2 t2 
LEFT JOIN Table1 t1p ON t2.PriceId = t1p.Id 
LEFT JOIN Table1 t1m ON t2.MaterialId = t1m.Id 
LEFT JOIN Table1 t1s ON t2.ServiceId = t1s.Id 
+1

@XLAnt謝謝你的小提琴。發佈我的答案時無法讓網站正常工作。 – Fox

+0

完美X.L.Ant!我確實錯誤地接近了它,因爲我的第一個查詢只給出了一行結果。 非常感謝! –

0

是的,你可以用這種方式... 見我的例子:

select * from movies 
inner join relationship as r1 on movies.id=r1.movie_id 
inner join relationship as r2 on movies.id=r2.movie_id 
where r1.Taxonomy_id ="xyz" 
and r2.Taxonomy_id="abc" 
GROUP BY movies.id 

這會爲你工作。我已經在我的項目

+0

感謝您的回覆呦呦,我使用XL螞蟻的查詢。這也解決了我的問題。 –

+0

這就是偉大的莫里斯! –

相關問題