Создание сайтов и программирование
на том же пыхе для таких целей есть in_array
Создание сайтов и программирование
Вкратце разъясню, что делает запрос:
берёт данные об обсуждениях (постах/темах), его категории, считает комментарии, лайки, дизлайки. Работает с 5 таблицами, + объединяет уже объединённые... В общем запрос получился, на мой взгляд, огроменным... Считается ли это извращением и через сколько запросов и частоте ляжет мой сервер БД?
берёт данные об обсуждениях (постах/темах), его категории, считает комментарии, лайки, дизлайки. Работает с 5 таблицами, + объединяет уже объединённые... В общем запрос получился, на мой взгляд, огроменным... Считается ли это извращением и через сколько запросов и частоте ляжет мой сервер БД?
SELECT
discus.id,discus.pubdate,discus.serial,discus.subject,discus.description,discus.preview,discus.cat,
discus.user_id,discus.user_nick,discus.hidden,discus.closed,discus.archived,
users.nick AS user, users.photo AS user_photo, users.male AS user_male,
estimate.is_like,
(SELECT COUNT(did) FROM discus_estimate WHERE is_like = 1 AND did = discus.id) AS like_count,
(SELECT COUNT(did) FROM discus_estimate WHERE is_like = 0 AND did = discus.id) AS dislike_count,
(SELECT COUNT(discus) FROM discus_com WHERE discus = discus.id AND system IS NULL
and ((discus.cat = 0 AND (0 OR hidden IS NULL)) or
(discus.cat = 1 AND (0 OR hidden IS NULL)) or
(discus.cat = 2 AND (0 OR hidden IS NULL)) or
(discus.cat = 6 AND (0 OR hidden IS NULL)) or
(discus.cat = 7 AND (0 OR hidden IS NULL)) or
(discus.cat = 9 AND (0 OR hidden IS NULL)) or
(discus.cat = 10 AND (0 OR hidden IS NULL)) or
(discus.cat = 11 AND (0 OR hidden IS NULL)) or
(discus.cat = 12 AND (0 OR hidden IS NULL)) or
(discus.cat = 13 AND (0 OR hidden IS NULL)) or
(discus.cat = 8 AND (0 OR hidden IS NULL)) or
(discus.cat = 14 AND (0 OR hidden IS NULL))
) ) AS com_count,
(SELECT MAX(pubdate) FROM discus_com WHERE discus = discus.id AND system IS NULL
and ((discus.cat = 0 AND (0 OR hidden IS NULL)) or
(discus.cat = 1 AND (0 OR hidden IS NULL)) or
(discus.cat = 2 AND (0 OR hidden IS NULL)) or
(discus.cat = 6 AND (0 OR hidden IS NULL)) or
(discus.cat = 7 AND (0 OR hidden IS NULL)) or
(discus.cat = 9 AND (0 OR hidden IS NULL)) or
(discus.cat = 10 AND (0 OR hidden IS NULL)) or
(discus.cat = 11 AND (0 OR hidden IS NULL)) or
(discus.cat = 12 AND (0 OR hidden IS NULL)) or
(discus.cat = 13 AND (0 OR hidden IS NULL)) or
(discus.cat = 8 AND (0 OR hidden IS NULL)) or
(discus.cat = 14 AND (0 OR hidden IS NULL)))
) AS last_com
FROM discus
LEFT JOIN discus_cat ON discus_cat.id = discus.cat
LEFT JOIN users ON users.id = discus.user_id
LEFT JOIN discus_estimate AS estimate ON estimate.did = discus.id AND estimate.uid = 0
WHERE (
(discus.cat = 0 AND discus.hidden IS NULL) or
(discus.cat = 1 AND discus.hidden IS NULL) or
(discus.cat = 2 AND discus.hidden IS NULL) or
(discus.cat = 6 AND discus.hidden IS NULL) or
(discus.cat = 7 AND discus.hidden IS NULL) or
(discus.cat = 9 AND discus.hidden IS NULL) or
(discus.cat = 10 AND discus.hidden IS NULL) or
(discus.cat = 11 AND discus.hidden IS NULL) or
(discus.cat = 12 AND discus.hidden IS NULL) or
(discus.cat = 13 AND discus.hidden IS NULL) or
(discus.cat = 8 AND discus.hidden IS NULL) or
(discus.cat = 14 AND discus.hidden IS NULL)
)
GROUP BY discus.id ORDER BY last_com DESC, discus.pubdate DESC LIMIT 0,5
Запрос свою работу выполняет Лезть туда уже боюсь. 0 0 2
Комментарии (45)
ответил Dannii
есть... я работаю сутки через сутки, а ночью, после суток работы, вот этим вот занимаюсь. Я всё жду, когда же я с ума сойду и меня в психушку закроют.
объединяет уже объединённые
WHERE (
(discus.cat = 0 AND discus.hidden IS NULL) or
(discus.cat = 1 AND discus.hidden IS NULL) or
(discus.cat = 2 AND discus.hidden IS NULL) or
(discus.cat = 6 AND discus.hidden IS NULL) or
(discus.cat = 7 AND discus.hidden IS NULL) or
(discus.cat = 9 AND discus.hidden IS NULL) or
(discus.cat = 10 AND discus.hidden IS NULL) or
(discus.cat = 11 AND discus.hidden IS NULL) or
(discus.cat = 12 AND discus.hidden IS NULL) or
(discus.cat = 13 AND discus.hidden IS NULL) or
(discus.cat = 8 AND discus.hidden IS NULL) or
(discus.cat = 14 AND discus.hidden IS NULL)
)
не ну это уже лютая дичь... по скорости хз, но эстетически выглядит это отвратно.(discus.cat = 0 AND discus.hidden IS NULL) or
(discus.cat = 1 AND discus.hidden IS NULL) or
(discus.cat = 2 AND discus.hidden IS NULL) or
(discus.cat = 6 AND discus.hidden IS NULL) or
(discus.cat = 7 AND discus.hidden IS NULL) or
(discus.cat = 9 AND discus.hidden IS NULL) or
(discus.cat = 10 AND discus.hidden IS NULL) or
(discus.cat = 11 AND discus.hidden IS NULL) or
(discus.cat = 12 AND discus.hidden IS NULL) or
(discus.cat = 13 AND discus.hidden IS NULL) or
(discus.cat = 8 AND discus.hidden IS NULL) or
(discus.cat = 14 AND discus.hidden IS NULL)
)
на том же пыхе для таких целей есть in_array
in_array([0, 1, 2, 6, 7, 9, 10, 11, 12, 13, 8, 14],
sql_query('... where discus.hidden is null ...'));
впрочем не уверен, что это то что надо...Лезть туда уже боюсь.
подними из бэкапа на виртуалке дубль бд и извращайся там скок влезет. Для добавления комментариев необходимо авторизоваться
Разрушители
Новая эпическая онлайн-игра от Овермобайл. Битвы...