пытается сохранить шаг и объединить эти два запроса, но не уверен, как это сделать лучше всего. В основном, первый запрос получает список отзывов в нашей системе, а второй видит, было ли отправлено уведомление (если есть результаты, которые были возвращены, то они были отправлены).Объединение запросов
Получите отзывы:
SELECT r.*,
coalesce((SELECT AVG(rr.rating)
FROM `" . DBTABLEPREFIX . "reviews_ratings` rr
WHERE rr.review_id = r.id
)
, ''
) AS rating,
FROM `" . DBTABLEPREFIX . "reviews` r
WHERE BELOW SELECT IS 0 RESULTS
проверить, если уведомление существует (да, я знаю, что это не работает сама по себе):
SELECT rn.*
FROM `" . DBTABLEPREFIX . "reviews_notifications` rn
WHERE rn.website_id = r.website_id
AND rn.post_id = r.post_id
Любые идеи на пути, чтобы сделать это правильно? Также в случае, если вам интересно, почему мы не можем проверить r.id в таблице уведомлений, потому что таблицы отзывов и обзоров_отчета очищаются каждый день свежими данными. Процесс, вероятно, будет переписан позже, чтобы не убивать, а добавлять только новые элементы.
Спасибо, как раз то, что я искал! – spyke01
Выполняя вторую, вместо того, чтобы объединиться, насколько это повышает эффективность? Похоже, что запрос запускается только один раз, а не каждый раз, как в моем запросе. – spyke01
Вы можете протестировать его с курса. Но вторая запись означает, что сначала будет вычисляться производная таблица (с результатами после группы), и эта производная таблица будет присоединена к таблице обзоров. –