2014-12-30 51 views
1

我有tbl A和tbl B,如下所示,我希望得到它們的名稱,用逗號分隔,但我沒有使用我正在尋找的格式。用逗號選擇查詢並加入

http://sqlfiddle.com/#!2/149093/10

用戶:1,2,3; 2 - 我也應該得到名A,B,C,然後B,而我只得到A和B. 我應該如何得到他們的個人的名字誰在列用戶中並且還滿足2至少存在的條件。感謝提前。

預期輸出是:

整行與甲
整行與乙
整行使用C
整行與甲

基本上4行,因爲有4個用戶在與總的名稱 。

| USER | CATEGORY | USERNAME | 
|-------|----------|----------| 
| 1,2,3 |  1 |  A | 
| 1,2,3 |  1 |  B | 
| 1,2,3 |  1 |  C | 
|  2 |  1 |  B | 
+1

什麼是xpected輸出?其不明確的問題 –

回答

2

試試這個:

SELECT a.user, a.category, b.username 
FROM tblA a 
JOIN tblB b ON find_in_set(b.userid,a.user) 
WHERE FIND_IN_SET(2,a.user) 
ORDER BY a.user; 

檢查SQL FIDDLE DEMO

OUTPUT

| USER | CATEGORY | USERNAME | 
|-------|----------|----------| 
| 1,2,3 |  1 |  A | 
| 1,2,3 |  1 |  B | 
| 1,2,3 |  1 |  C | 
|  2 |  1 |  B | 
+0

這真的很接近我怎麼能得到4行而不是2,也可以請你解釋查詢。它會幫助我ton.Thanks – jason

+0

增加expexted result.But你能解釋上面的查詢我試過很多爲你給的結果,但我不能得出結果。謝謝 – jason

+0

超級+ 1.我忘記加入另一個表是在created_by_sno我會更新它在另一個問題,並標記你。請考慮它。再次感謝。祝你有美好的一天。 – jason

0

你不應該使用

('1,2,3', '1'), 
('1,4,5', '2'), 
('1,3,5', '3'), 

給多個用戶添加到同一個類別。相反,使用低於你所使用的格式已經將用戶添加到類:

('1', '1'), 
('2', '1'); 

因此,而不是:('1,4,5', '2'),

用途:('1', '2'), ('4', '5'), ('1', '2'),