2012-08-17 118 views
0

我有一個表:MySQL的加入逗號分隔值

horse 
    ->id 
    ->course 
    ->date 

還有一句:

course 
    ->title 
    ->trackstyle 

而第三個

trackstyle 
    ->id 
    ->style 

該課程的風格,可以是多個,所以我想我會創建一個字段並保存用逗號分隔的值。

即:

trackstyle 
id:1 
style:galloping 

id:2 
style:flat 

course 
title:ascot 
trackstyle:1,2 (as it's galloping and flat) 

title=beverley 
trackstyle:1  (as it's just flat) 

現在,我有麻煩建立,將查詢所有三個表的請求......

它是建立我的數據庫的正確方法是什麼? 或者我應該在我的課程表中,添加一個新列,我會把trackstyle在「硬」:

course 
title: ascot 
trackstyle: galloping, flat 

title: beverley 
trackstyle: flat 
+0

對不起,格式化不好......不知道你能理解我的問題! – user1606597 2012-08-17 10:22:49

+0

解決了你的問題 – 2012-08-17 10:23:14

回答

0

不,這不是建數據庫的好方法。相反,你必須這樣做以下

course 
    ->title 

trackstyle 
    ->id 
    ->style 

和一個連接表像下

SELECT c.title, GROUP_CONCAT(t.style) 
FROM course c JOIN course_trackstyles ct ON ct.course_id = c.id 
       JOIN trackstyles t ON ct.trackstyle_id = t.id 
GROUP BY c.title 
0

course_trackstyles 
     ->course_id 
     ->trackstyle_id 

您的查詢將是東西是一個一對多的關係,因爲一門課程可以有很多類型的軌道:

course 
title: ascot 
trackstyle: 1 
title: ascot 
trackstyle: 2 
title: beverley 
trackstyle: 2 

trackstyle 
id: 1 
style: galloping 
id: 2 
style: flat