2013-07-22 83 views
0

在我的主頁上,我想顯示我的網站上30個最受歡迎的頁面。我認爲做到這一點的最佳方式是爲每個單獨的頁面創建一個計數器,表格中名爲hit_counter的列。然後,無論何時查看頁面,hit_counter都增加1.顯示我的網站上最受歡迎的頁面

但是,我的網站有許多不同的表格,例如,酒店,餐廳,娛樂場所。我希望它們在結果中混合使用,但我不確定查詢將從數據庫中提取這些數據。

我想這應該是某種聯接。我也想要取每行的名稱,描述和URL,我已經用普通莊園命名了這些列,例如hotel_name,hotel_description,hotel_url,restaurant_name,restaurant_description等。

然後查詢就會ORDER BY hit_counter DESC。

那麼請問做這樣一個連接的查詢是什麼,我的桌子被稱爲餐館,酒店和娛樂場所。

+0

頁面和餐廳,酒店和娛樂桌之間的關係是什麼? –

+0

你是什麼意思?他們都在同一個數據庫中,在不同的表中。他們沒有關係,我只是想鞏固他們。我想唯一的關係是hit_counter。 – Source

+0

點擊在哪裏? –

回答

0

如果我沒有弄錯,你正在爲每個分類頁面創建新表格。在我看來,最好的辦法是如果你爲頁面創建了1個表格,爲類別創建了1個表格,並且創建了一個點擊表格。你也可以有酒店餐桌,餐廳桌子等,但是酒店的桌子和桌子的桌子有區別.....酒店應該存儲關於每個酒店的信息,頁面應該存儲關於每個頁面的信息。

不管怎麼說,類別表是這樣的:

ID 
Category 

頁表應該是這樣的:

ID 
Category_id 
url 
title 
description 
etc 

命中表應該是這樣的:

ID 
category_id 
page_id 
hits 

這樣編寫查詢要容易得多

'SELECT p.url, p.description, p.title, h.hits FROM pages p JOIN hits h ON p.id=h.page_id ORDER BY h.hits DESC LIMIT 30' 

沒有測試,但這是我的想法,我會做。

PS:對不起,如果有任何錯別字

+0

對,是的,如果我爲它們創建了一個表,那將會容易得多,但它們有很多其他不同的字段。這也是我現階段唯一可以考慮的方法。但我想知道是否有其他方式。 – Source

+0

我也想把文章也包含在裏面。 – Source

+0

要找到您的問題的其他方式,我將不得不看到您的數據庫結構,並在我發佈代碼之前嘗試。正如我所說,我不確定我是否理解你的問題。不過,我強烈建議擁有一個良好的數據庫結構,以便將來您的工作變得更加輕鬆。複雜的數據庫結構對於簡單的事情只會導致更多的問題和更多的錯誤。我已經學會了這種艱難的方式。 – SasaT