У меня есть пять таблиц в моей базе данных. Участники, предметы, комментарии, голоса и страны. Я хочу получить 10 предметов. Я хочу получить количество комментариев и голосов за каждый элемент. Я также хочу, чтобы член, представивший каждый элемент, и страну, из которой они были.Лучший способ построить этот оператор MySQL с подзапросами
После публикации здесь и в других местах я начал использовать подзапросы, чтобы получить подсчеты, но этот запрос занимает 10 секунд или больше!
SELECT `items_2`.*,
(SELECT COUNT(*)
FROM `comments`
WHERE (comments.Script = items_2.Id)
AND (comments.Active = 1))
AS `Comments`,
(SELECT COUNT(votes.Member)
FROM `votes`
WHERE (votes.Script = items_2.Id)
AND (votes.Active = 1))
AS `votes`,
`countrys`.`Name` AS `Country`
FROM `items` AS `items_2`
INNER JOIN `members` ON items_2.Member=members.Id AND members.Active = 1
INNER JOIN `members` AS `members_2` ON items_2.Member=members.Id
LEFT JOIN `countrys` ON countrys.Id = members.Country
GROUP BY `items_2`.`Id`
ORDER BY `Created` DESC
LIMIT 10
Мой вопрос, является ли это правильный способ сделать это, если есть лучший способ, чтобы написать это заявление или если есть совершенно другой подход, который будет лучше. Должен ли я выполнять подзапросы отдельно и собирать информацию?
Вы сохранили этот день. Благодаря! – Corey