EDIT:
Позвольте мне быть более точным в том, что я ищу:
catID, cat1, cat2, cat3, cat4, pri_color, sec_color и cat_name относятся к каждой конкретной категории.
Поле sum_views должно соответствовать сумме всех просмотров на форуме для этой конкретной категории.
Поле count_posts должно соответствовать количеству сообщений на форуме для этой категории.
ИД пользователя, идентификатор форума, заголовок, псевдоним, созданный и абзац соответствуют последнему сообщению в каждой категории.
Другими словами, для каждой категории мне нужна информация о соответствующей категории, сводная статистика форума для каждой категории и, наконец, самое новое сообщение в каждой категории.
Мне дали небольшой проект для создания вида форума для нашей существующей системы. В этом случае мне нужно найти самый новый пост (и другую информацию) в каждой категории форума.
Мой текущий запрос выглядит следующим образом:
SELECT DISTINCT forum.catID AS catID, category.cat1 AS cat1,
category.cat2 AS cat2,
category.cat3 AS cat3,
category.cat4 AS cat4,
SUM(forum.view) AS sum_views,
COUNT(forum.id) AS count_posts,
category.pri_color AS pri_color,
category.sec_color AS sec_color,
category.name AS cat_name,
forum.userID AS userID,
forum.id AS forum_id,
forum.title AS title,
users.alias AS alias,
MAX(forum.created) AS created,
forum.paragraph AS paragraph
FROM forum, category, users
WHERE forum.approved = 'yes'
AND users.id = forum.userID
AND forum.catID = category.id
GROUP BY forum.catID
ORDER BY category.name
И это дает мне почти всю правильную информацию, которую я хочу, КРОМЕ реального нового сообщения. Я предполагаю, что мой главный виновник - моя неопытность с JOINS и GROUP BY. Кажется, данные сгруппированы таким образом, что я получаю самую новую созданную временную метку, но самую старую запись на форуме.
Обратите внимание, что на данный момент я не могу изменить структуру таблицы или создать таблицу кеша в текущем программном обеспечении, хотя мы собираемся заменить ее в ближайшем будущем. Кроме того, поле id в таблице USERS является внешним ключом для другой таблицы.
Форум
id int(10) unsigned NO PRI NULL auto_increment
userID int(10) unsigned NO MUL 0
catID int(3) unsigned NO MUL 0
regID int(3) unsigned NO MUL 0
approved enum('yes','no') NO MUL yes
title varchar(150) NO MUL paragraph text NO NULL
view int(10) unsigned NO 1
created int(10) unsigned NO 0
modified int(10) unsigned NO MUL 0
ip varchar(15) NO
oldID int(10) unsigned NO 0
comments int(4) NO MUL 0
responses int(4) NO 0
pics int(4) NO MUL 0
ПОЛЬЗОВАТЕЛИ
user_id int(10) unsigned NO PRI NULL auto_increment
id int(10) unsigned NO MUL 0
alias varchar(50) NO MUL new
email varchar(150) NO MUL
fname varchar(30) NO MUL
lname varchar(30) NO MUL
address varchar(200) NO
city varchar(50) NO
state varchar(50) NO
zip varchar(20) NO
country varchar(50) NO
job varchar(150) NO
phone varchar(30) NO
url varchar(200) NO
pref_news enum('yes','no') NO no
pref_contact enum('yes','no') NO yes
pref_summary int(3) NO 20
pref_showLoc enum('yes','no') NO no
pref_showName enum('yes','no') NO no
pref_showEmail enum('yes','no') NO no
pref_showUrl enum('yes','no') NO no
КАТЕГОРИЯ
id int(10) unsigned NO PRI NULL auto_increment
area enum('article','classifieds','news','forum') NO forum
level enum('1','2','3','4') NO 1
cat1 int(10) NO 0
cat2 int(10) unsigned NO 0
cat3 int(10) unsigned NO 0
cat4 int(10) unsigned NO 0
name varchar(150) NO
pri_color varchar(6) NO
sec_color varchar(6) NO
right_nav text NO NULL
left_ad text NO NULL
footer_ad text NO NULL
top_ad text NO NULL