@hiddenproger

Как извлечь рандомную строку из дочерней таблицы?

У меня есть родительская таблица и дочерняя.
Родительская таблица (tasks)
id parent_id
4 # <- Главная (родительская тема) Уровень 2
5 4 <- дочерняя открытый шах
6 4 <- дочерняя мельница
В интерфейсе это выглядит так
5f47dcbc67f93251738694.png
И есть дочерняя (puzzles) - таблица задач - задачи могут быть только в дочерних темах

id puzzle_id task_id
1 52 5
2 61 6
5 25 6
6 70 5

Мне необходимо извлечь рандомный пазл (puzzles) из темы (tasks) второго уровня, она может принадлежать любой теме второго уровня - либо мельница, либо открытый шах. Но у меня проблема с составлением такого запроса.Таких главных тем и дочерних тем в БД много, так что нельзя привязываться к id. Подскажите, пожалуйста, как он может выглядеть?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Что-то типа
select 
  puzzles.* 
from tasks 
  inner join puzzles 
    on tasks.parent_id = :id 
      and tasks.id = puzzles.task_id 
order by rand()
limit 1

если строк, подходящих под отбор по task_id много, то смотри оптимизацию тут: https://habr.com/ru/post/154905/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы