Re: [請益] 有關排序的問題

看板PHP作者 (小喵村民(金5肉10))時間19年前 (2006/11/13 16:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《shiauuen ( )》之銘言: : 假設有十個網站,資料庫裡分別有這十個網站的資料表,用來記錄流量的 : 因為要扣除一些無效的流量因素,需再利用程式去計算這十個網站的流量 : 然後計算好這十個網站真正流量的數值,需要做排序,從流量高到低,列表出來 : 例如像這樣: : 編號   站名   流量 : ------------- : 05 Z網站   100 : 01 A網站 90 : 08 G網站 80 : 04 U網站 70 : 02 O網站 60 : 07 P網站 50 : 06 E網站 40 : 03 S網站 30 : 10 L網站 20 : 09 M網站 10 : 請問要顯示這樣的結果,程式要如何寫呢? : 麻煩各位了,先謝謝了! 想到三種方法 ~ 第一個方法你可以用 mysql 的 merge table, 轉一篇小弟寫在友站的文章 作者 littlex (小艾克斯) 看板 Mysql 標題 [文件]MySQL中使用merge table 時間 Thu Oct 7 09:52:45 2004 ─────────────────────────────────────── 關於merge table的實作方式: 請參考官網 http://dev.mysql.com/doc/mysql/en/MERGE.html 在工作上的需要,有一些log之類的資料 在塞進mysql後,會讓table size膨脹速度太快.. 造成資料的備份或維護不易.. 這時可以使用mysql提供的merge table功能, 將資料分成好多table寫入 做法如下: 1.建立要被union進來的table, 例如: CREATE TABLE t1 ( -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> message CHAR(20)); mysql> CREATE TABLE t2 ( -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> message CHAR(20)); 2.建立merge table (就是你要寫入的table名稱) CREATE TABLE total ( -> a INT NOT NULL AUTO_INCREMENT, -> message CHAR(20), INDEX(a)) -> TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; 請看SQL語句的最後一行.. type=merge untion=(t1,t2) 代表你要把t1和t2兩個table union進來 insert_method=last 就是要寫入資料到後面的table t2 這樣你的t2 table如果太大 可以再建一個 structure一樣的t3 同時再下sql command : ALTER TABLE `total` INSERT_METHOD=LAST UNION=(`t1`,`t2`,`t3`); 您的total就開始寫入t3哩 這樣做的好處是 您的程式不用做更改.. 就能做到將資料分散table放置 :) (最理想的狀況是寫在crontab 中, 讓系統幫您做掉這些sql command :) 第二個方法是用 union 的 select (select * from a ) union (select * from b) 第三種可以用 tmp table 這種小弟就沒實做過哩~ 可參考官方說明 http://dev.mysql.com/doc/refman/5.0/en/create-table.html -- 修電腦條款(來自一個好人的怒吼) http://0rz.tw/ae1rm -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.29.91
文章代碼(AID): #15M30Ttd (PHP)
文章代碼(AID): #15M30Ttd (PHP)