Я использую mysql/mariadb.Можно ли объединить эти операторы выбора SQL?
Что я хочу сделать: Получить id
, name
, private
для каждого Group
/затем получить число Video
с в каждом Group
/затем получить последние 20 Video
с для каждого Group
.
В настоящее время я использую три отдельных SQL-запроса, а затем каждый раз запускаю их для каждого соответствующего идентификатора. Есть ли способ объединить три SQL-запроса в один и запустить их по списку идентификаторов?
Например, на группы 1,2,3:
Executing (default): select `id`, `name`, `private` from `Groups` where `id` = '1' limit 1
Executing (default): select `id`, `name`, `private` from `Groups` where `id` = '2' limit 1
Executing (default): select `id`, `name`, `private` from `Groups` where `id` = '3' limit 1
Executing (default): select count(*) from `Videos` where `GroupId` = '1' and `live` = true
Executing (default): select count(*) from `Videos` where `GroupId` = '2' and `live` = true
Executing (default): select count(*) from `Videos` where `GroupId` = '3' and `live` = true
Executing (default): select `id`, `file` from `Videos` where `GroupId` = '1' and `live` = true order by `id` desc limit 20
Executing (default): select `id`, `file` from `Videos` where `GroupId` = '2' and `live` = true order by `id` desc limit 20
Executing (default): select `id`, `file` from `Videos` where `GroupId` = '3' and `live` = true order by `id` desc limit 20
Могу ли я эффективно сломать три запроса в один или два запроса, или это минимальное количество запросы, необходимые для получения необходимых данных? – switz
Зависит, если таблицы имеют ссылку друг на друга и как вы хотите, чтобы данные были выведены – Matt
. Она дает только первую запись 1/2/3, но для опроса нужны все три записи –