簡體   English   中英

MySQL查詢(聯接表)

[英]MySQL query (joining tables)

問題表

id *(int)| 問題文本(字符串)| question_type(int)

替代表

id *(int)| question_id(int)| Alternative_text(字符串)| is_correct(布爾)

答案表

id *(int)| question_id(int)| Alternative_id(int)| answer_text(字符串)

“ *” =主鍵

每個問題可以是自由文本類型,也可以是多個選擇器。 多重選擇器問題有一個或多個選擇,只有一個是正確的。

答案由question_id和alternate_id(多個選擇器)或answer_text(自由文本)定義。 is_correct bool是,所以我可以標記哪個答案是正確的。

如何進行SQL查詢,為我提供每個問題列出的所有替代方案,並統計每個替代方案的數量,以顯示選擇了多少替代方案? 假設我可以將其存儲在數組中,並使用foreach循環對其進行遍歷,並將其顯示為以下示例。

例如,每個問題都由question_text表示,與該問題相關的每個替代項都由Alt1(alternative_text),Alt2等表示。。。替代項后的數字是它得到的選擇數(答案)。

問答1

Alt1 | 3

Alt2 | 2

Alt3 | 0

多問題2

Alt1 | 2

Alt2 | 3

自由文本1

答1

答2

....

我可以查詢所有問題以及屬於它的所有替代方法,但是當我嘗試獲取每個問題替代方法的所有答案時,我就失敗了。

所以現在我可以使用來自SQL-ninja的一些幫助=)

在此先感謝Daniel

在我的頭頂上,這可能起作用:

SELECT alternatives.id, COUNT(DISTINCT(answers.id))
FROM alternatives
LEFT JOIN answers ON alternatives.id = answers.altid
GROUP BY alternatives.id;

這樣可以為您提供answers表中每種替代方法出現的總次數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM