У меня есть проблемы со следующим запросом: (берегитесь, длинный запрос !!)выбора последнего сообщения в категории
SELECT
c.frm_category_id,
c.name,
c.slug,
s.frm_category_id,
s.name,
s.slug,
s.description,
IFNULL(topics_count,0),
IFNULL(messages_count,0),
n.frm_message_id,
n.user_id,
n.frm_topic_id,
n.timestamp,
n.title,
n.slug,
u.account_type,
u.username
FROM
frm_categories AS c
LEFT JOIN(
SELECT
frm_category_id,
parent_frm_category_id,
name,
slug,
description
FROM
frm_categories
WHERE
parent_frm_category_id != 0
) AS s
ON
c.frm_category_id = s.parent_frm_category_id
LEFT JOIN(
SELECT
frm_category_id,
frm_topic_id,
COUNT(frm_topic_id) AS topics_count
FROM
frm_topics
GROUP BY
frm_category_id
) AS t
ON
s.frm_category_id = t.frm_category_id
LEFT JOIN(
SELECT
COUNT(frm_message_id) AS messages_count,
frm_topic_id,
frm_category_id
FROM
frm_messages
GROUP BY
frm_category_id
) AS m
ON
t.frm_topic_id = m.frm_topic_id
LEFT JOIN(
SELECT
MAX(m.frm_message_id) AS frm_message_id,
m.user_id,
m.frm_category_id,
m.frm_topic_id,
m.timestamp,
t.title,
t.slug
FROM
frm_messages AS m,
frm_topics AS t
WHERE
m.frm_topic_id = t.frm_topic_id
GROUP BY
m.frm_topic_id
) AS n
ON
s.frm_category_id = n.frm_category_id
LEFT JOIN
users AS u
ON
n.user_id = u.user_id
WHERE
c.parent_frm_category_id = 0
ORDER BY
c.frm_category_id ASC,
s.frm_category_id ASC
Объяснение:
ВЫБРАТЬ => Я выбираю category_id, имя и пробковая категория РОДИТЕЛЕЙ (потому что WHERE parent_frm_category_id = 0)
FIRST LEFT JOIN => Я выбираю дочерние категории родительской категории (более 1)
ВТОРОГО LEFT JOIN => Я сосчитать все темы в каждой подкатегории
ТРЕТИЙ LEFT JOIN => Я считаю все сообщения в каждой подкатегории
ЧЕТВЕРТЫЙ СЛЕВА РЕГИСТРИРУЙТЕСЬ => Я выбираю последнее сообщение каждой подкатегории (, где она идет неправильно)
ПЯТЫЙ LEFT JOIN => Я выбираю ACCOUNT_TYPE и имя последнего сообщения каждой подкатегории
в чем проблема?
Я не выбираю последнее сообщение, а случайное сообщение.
Может кто-нибудь помочь мне с этим? :)
Заранее благодарен!
Попробуйте с правом присоединиться вместо левого на четвёртую присоединиться. – solarc
это не работает. с правом присоединения я не получаю все подкатегории, только последние. – yesterday