Как получить случайные вопросы из базы данных включают категории? - PullRequest
2 голосов
/ 01 марта 2020

Привет, я пытаюсь сделать простое приложение для викторины в php на основе математических тестов многих лет. У меня есть база данных с такими столбцами:

-id

-pytan ie

-a

-b

- c

-d

-poprawna

-rok_id

-typ_id

Я использую функцию rand для получения случайного идентификатора, а затем я использую это в sql ответе, чтобы получить случайный вопрос. Однако я не знаю, как получить радном вопрос, например случайный один вопрос включают yera_id = 1

Во-первых, я использую $ numer = rand (1,1800) Мой sql выбор такой, как \

select pytanie, a,b,c,d, nazwa, rok_liczba, nazwa_typu, poprawna from pytania  left join rok on rok.id= pytania.rok_id left join typ on typ.id=pytania.typ_id where typ_id=1  and  pytania.id=".$numer.""

Когда я добавляю к sql выберите ,, где year_id = 1 ", я должен нажимать много раз, чтобы поразить, когда ранд получит 1, потому что иначе я не получу никакого результата. Можно рандить из записей, если результат sql ответ?

1 Ответ

2 голосов
/ 01 марта 2020

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

Я бы порекомендовал сделать случайную сортировку в самом запросе. Это должно быть так же просто, как добавить это в конце вашего запроса:

select ...
from ...
where typ_id = 1
order by rand() limit 1

Обратите внимание, что точный синтаксис может варьироваться в зависимости от базы данных - приведенный выше синтаксис MySQL.

...