讓我在我後更加具體:
CATID,CAT1,CAT2,CAT3,CAT4,pri_color,sec_color和cat_name都與每一個特定的類別。
sum_views字段應該對應於論壇中該特定類別的所有視圖的總和。 count_posts字段應該對應於該類別的論壇中的帖子數量。
userID,forum_id,title,別名,創建的和段落對應於每個類別中的最新帖子。換句話說,對於每個類別,我需要相應的類別信息,每個類別的聚合論壇統計信息,最後是每個類別中的最新帖子。
我已經給了一個小項目來爲我們現有的系統創建論壇類型視圖。在這種情況下,我需要在每個論壇類別中找到最新的帖子(和其他信息)。
我當前的查詢如下:
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的經驗不足。它似乎是以這樣一種方式對數據進行分組,使得它給我最新創建的時間戳,但卻是最早的論壇帖子。
請注意,目前,我不能在當前軟件中更改表結構或創建緩存表,儘管我們將在不久的將來構建替代品。此外,USERS表中的id字段是另一個表的外鍵。
論壇
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
USERS
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
不幸的是,這並沒有回答我的問題。我的錯是因爲沒有足夠清楚地表述。 – GregoryD 2009-10-13 18:44:06