2013-07-17 29 views
0

我有2個表(以下簡化)如何加入複合表

**classes**      **locations** 
[classname][locationid][time]  [id][locationname][address] 
    classA   1  1pm   1 locationA  123 
    classB   2  2pm   2 locationB  456 
    classC   2  3pm 
    classD   1  2pm 

我不知道如何字這個......我想創建一個SELECT語句,這樣我可以擁有所有的班級按地點分組在一起,而不復制位置數據。如果我使用:

SELECT * FROM classes 
INNER JOIN locations ON classes.locationid = locations.id 

我最終得到4行結果。我怎樣才能得到2行的結果? (包含classA和classD的locationA,沒有獲取重複的位置數據)

這是不能在直接MySQL中完成的事情嗎?如果是這樣,我可以在php中管理。

回答

1

使用GROUP_CONCAT

SELECT l.locationname, group_concat(distinct c.classname) 
FROM locations l 
INNER JOIN classes c ON c.locationid = l.id 
group by l.locations 
+1

右通用的解決方案,除了倒退:他想按位置分組類別,通過類別分組沒有位置。 – Barmar

+0

我認爲juergen完全正確!現在我需要將它用於更大的圖片。非常感謝! – saniel