I am working with MYSQL, and want to create a query. I have 3 tables.
QUESTION
| QUESTION_NUMBER | QUESTION_DESCRIPTION | 
|---|---|
| 1 | anydesc | 
| 2 | anydesc2 | 
ANSWER
| ANSWER_NUMBER | ANSWER_DESCRIPTION | 
|---|---|
| 1 | anydescANS | 
| 2 | anydesc2ANS | 
| 3 | anydesc3ANS | 
And a bridge TABLE
QUESTION_ANSWER
| Q_NUM | A_NUM | 
|---|---|
| 1 | 1 | 
| 2 | 2 | 
| 2 | 3 | 
Now I want to retrieve all the Answers of let’s say a specific QUESTION NUMBER i.e 1.
What I have tried.
SELECT QUESTION.QUESTION_NUMBER, QUESTION.QUESTION_DESCRIPTION, ANSWER.ANSWER_NUMBER, ANSWER.ANSWER_DESCRIPTION FROM QUESTION RIGHT JOIN QUESTION_ANSWER ON QUESTION.QUESTION_NUMBER=4 INNER JOIN ANSWER ON QUESTION_ANSWER.Q_NUM=4
and similar queries, but I can not make sense of it, and can not get desired output.
What I want is to get all the answers that belong to specific Question Number.
Advertisement
Answer
I would write it this way:
SELECT Q.QUESTION_NUMBER, Q.QUESTION_DESCRIPTION, A.ANSWER_NUMBER, A.ANSWER_DESCRIPTION FROM QUESTION AS Q INNER JOIN QUESTION_ANSWER AS QA ON Q.QUESTION_NUMBER = QA.Q_NUM INNER JOIN ANSWER AS A ON QA.A_NUM = A.ANSWER_NUMBER WHERE Q.QUESTION_NUMBER=4;
You don’t need RIGHT OUTER JOIN, you need INNER JOIN, because there is certain to be a matching question if you are seeking answers.
I recommend avoiding the “comma-style” join syntax. That was made obsolete in 1989. It works the same as inner join, but it’s worth using the modern syntax consistently.