ПРИСОЕДИНИТЬСЯ к таблице 2 на основе отношений

#mysql #sql #express

Вопрос:

У меня есть эти 2 таблицы, 1-это вопросы, а 1 — ответы

Мне удалось получить вопрос на основе Quiz_ID, поэтому я получаю список вопросов на основе Quiz_ID, но теперь я тоже хочу получить ответ на основе question_ID.

Я сделал это отдельно, то есть я получаю вопрос по quiz_ID и отвечаю по question_ID, но это 2 отдельные модели, теперь я хочу, чтобы это было только в 1 запросе или 1 модели? Могу ли я сделать это каким-то образом с помощью JOIN или каким-то другим методом? Я немного прочитал его, но он кажется грязным, я все еще не знаю, как им управлять. Но я знаю, что мне нужно как-то связать question_ID таблицы ниже с верхней таблицей или напротив.

Потому что некоторые работы на интерфейсе работают не так, как я хочу, поэтому я должен присоединиться к нему в бэкэнде, как это. Поэтому, когда я попытаюсь получить запрос на интерфейсе, он получит кучу данных, и я разделю их на интерфейсе позже, потому что отдельный способ не удался.

введите описание изображения здесь

Вот мой код:

 Question.getQuesAnsListByQuizID = (quiz_ID, result) => {
//-- I'm trying to change the query in here --//
    db.query("SELECT questions.* FROM questions WHERE quiz_ID = ?", [quiz_ID],(err, res) => {
        if (err) {
          result(null, err);
          return;
        }
        console.log({res})
        result(null, res);
      });
}
 

Ответ №1:

Для простого соединения используйте приведенный ниже запрос. Вместо * используйте конкретные имена столбцов.

 SELECT q.*, a.* 
FROM questions q
INNER JOIN Answers a ON q.question_id = a.question_id  
WHERE q.quiz_ID = ?
 

Если вам нужны все данные из вопросов, на которые нет ответа, используйте ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ вместо внутреннего соединения.