2013-04-03 51 views
1

我想創建套不同的問題和存儲問題的答案幾乎是無限列

這就是我試圖

表問題 ID,名稱

表字段 ID,標籤

表關係 id,question_id,field_id

這很好用,但只適用於 這個問題的顯示部分,但是如何存儲答案呢?我不能存儲答案水平,因爲我沒有一個參考(COL名),和垂直方向將是非常糟糕的數據庫嗎?

IM用mysql。什麼是最好的方法來做到這一點?謝謝!

回答

2

您可以只需添加1更多的錶店回答:

question_id PK INT 
user_id  PK INT <-- or maybe anything that identifies the user 
field_id  PK INT 
answer   VARCHAR <-- or TEXT , depends on your usage 

要返回所有結果(假設回答表命名爲tbl_answer):

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 

要返回的特定結果用戶:

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 
WHERE user_id={user id here} 

返回特定問題的結果:

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 
WHERE question_id={question id here} 

當然,你必須進一步處理結果。

+0

,我怎麼能建立一個查詢返回所有提交?謝謝! – handsome

1

簡單。

你只需要另一個表來存儲答案在:

答案

ID question_id FIELD_ID(回答)

你可能還需要一個更現場爲您的 「答案」 關聯像某人或問卷正在回答。

+0

肯定。這是我認爲的明顯的答案。但如果我這樣做,我會爲每個答案有一排! – handsome

+0

正確,但沒有錯。 – stevecomrie