Как зациклить и выбрать из базы данных

Я использую Laravel и MySQL. Мне нужно получить следующий вопрос для отображения из базы данных.

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

Получить следующий вопрос (по порядку вопросов) в любой форме, которая соответствует идентификатору пользователя, не существующему в ответах.

Как зациклить и выбрать из базы данных

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

🤔 А знаете ли вы, что...
MySQL был создан в 1995 году шведской компанией MySQL AB.


1
36
1

Ответ:

Решено

Вот решение, которое должно соответствовать тому, что вы описали, возвращая первый вопрос (по question_id) для любой формы, на которую не отвечает конкретный пользователь (пользователь - это параметр, который вы предоставили для параметризованного запроса):

SELECT f.form_id, f.question_id
FROM questions AS q
INNER JOIN forms AS f
  ON f.question_id = q.id
LEFT OUTER JOIN answers AS a
  ON a.question_id = q.id AND a.user_id = ?
WHERE a.question_id IS NULL
ORDER BY q.id LIMIT 1;