2014-12-29 94 views
1

我有以下MySQL查詢:MySQL查詢聯接QUERY2

SELECT * 
FROM quizquestions 
INNER JOIN option2 ON quizquestions.question_id=option2.question_id 
WHERE quizquestions.quiz_id=13 

基本上,我有兩個表,一個表有問題,另一個表存儲4個選項的每一個問題。因此,例如,在quizquestions表將如下所示:使用循環同時顯示問題和選項

Option id (Primary Key), Question_id(To link it to the correct question), optionvalue 

     181    61            3 

目前,即時通訊:

Question_id (Primary Key), quiz_id(to link it to the quiz), question 

    61      13        1+2 

然後選擇表會像下面然而,每當我使用INNER JOIN查詢如上述所示,I得到以下:

question_id quiz_id question optionid question_id optionvalue 

    61   13  1+2  181   61   1 
    61   13  1+2  182   61   2 
    61   13  1+2  183   61   3 
    61   13  1+2  184   61   4 

然而,我想它顯示這樣的:

Question_id Quiz_ID  question optionvalue optionvalue optionvalue optionvalue 

    61   13   1+2  1    2   3    4 

這是這樣,我不會有第一列中看到question_id/quiz_id的重複。

這可以實現嗎?

+0

循環似乎是一個明智的解決方案。我想你可以試試'group_concat',然後使用php'explode'函數。但這是一種很不好的解決方案。如果你有答案是句子,你也必須選擇一個好的分隔符。 – Gohn67

回答

2
SELECT q.Question_id as questionId, q.Quiz_ID as quizId, q.question as question, GROUP_CONCAT(op.optionvalue SEPARATOR ' ') as options 
FROM quizquestions q INNER JOIN option2 op ON q.question_id=op.question_id WHERE q.quiz_id=13 
GROUP BY q.Question_id 

OR

SELECT q.Question_id as questionId, q.Quiz_ID as quizId, q.question as question, 
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(op.optionvalue), ',', 1), ',', -1) AS option1, 
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(op.optionvalue), ',', 2), ',', -1) AS option2, 
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(op.optionvalue), ',', 3), ',', -1) AS option3, 
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(op.optionvalue), ',', 4), ',', -1) AS option4 
    FROM quizquestions q INNER JOIN option2 op ON q.question_id=op.question_id WHERE q.quiz_id=13 
    GROUP BY q.Question_id 

試試這個。

+0

你好,這對我來說工作得很好,它確實連接了一個空格分開的選項,然後我逐個展開選項?謝謝! – hacker

+0

您可以使用拆分功能並單獨使用它。 –

+0

如果查詢正在爲您工作,您應該將答案標記爲已接受,以便其他人可以看到它並使用此答案:) –