2013-04-12 33 views
2

我對SQL很陌生,大多數我通過搜索都能夠回答的其他問題,但是這似乎很難找到類似的東西。我看到thisthis看起來很相似,但我無法找到答案,但我認爲它應該很簡單。如何將一個表中的多個列連接到另一個表中的列

爲了簡化我的數據庫,我試圖將兩個表連接到視圖中。

一個表(a_main)在用戶ID(UID)和他們的用戶名(名稱)之間有一個映射 第二個表(log_points)有許多列,包括兩個用戶(user1和user2)。這兩個用戶由用戶ID標識,但我想在視圖中顯示他們的用戶名。

SELECT name, UID FROM a_main 

返回類似

Jeff 1234

SELECT date, user1, user2 FROM log_points 

返回

2013-03-22 1222 1234

我希望視圖能夠通過名稱而不是id返回用戶。

如果它只是一個用戶,我可以做一個簡單的JOIN

SELECT date, a_main.name FROM log_points 
INNER JOIN a_main ON log_points.user1 = a_main.UID 

,但我無法弄清楚如何也加入到用戶2 a_main.UID。

任何建議將不勝感激!我正在使用MySQL。

編輯找到答案here

SELECT t1.name AS person1, t2.name AS person2 
FROM log_points t 
INNER JOIN a_main t1 ON t1.UID = t.user1 
INNER JOIN a_main t2 ON t2.UID = t.user1; 
+0

有2個用戶1222,1234,它們像對數點表中的列那樣工作......對吧? –

+0

我想通了,我發現一個相關的問題解決了它 - –

+1

@ Jeff-P,那麼你應該告訴我們解決方案是什麼 - 當別人有與你的問題相同的問題時。 ;-) – Darwind

回答

2

試試這個:

SELECT t1.name AS person1, t2.name AS person2 
FROM log_points t 
JOIN a_main t1 ON t1.UID = t.user1 
JOIN a_main t2 ON t2.UID = t.user1; 
0

試試這個

SELECT date, (SELECT name FROM a_main where UID=user1)as user1, (SELECT name FROM a_main where UID=user2)as user2 FROM log_points. 

可以在任何給對性能的深入瞭解這兩個查詢。

相關問題