#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 = ?
Если вам нужны все данные из вопросов, на которые нет ответа, используйте ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ вместо внутреннего соединения.