Re: [SQL ] 存取多個資料表

看板Database作者 (多想兩分鐘 = =")時間17年前 (2008/12/22 02:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《luxuryEX (戴汶)》之銘言: : 我是使用MYSQL +PHP : 我現在在做一個圖書館的系統 : 為了穩定性的問題 : 我在DB裡面按月份建了12個資料表 : 這12個資料表長得一模一樣 : 存資料的時候就會按建立該筆資料的月份存進對應的資料表裡面 : 但問題來了,要如何存取多個資料表呢? : 譬如我要從12個資料表裡面搜尋類似的書 : 以下是我寫的SQL語法: : $sql = "SELECT title,author,publisher,isbn : FROM 01jan, 02feb, 03mar, 04apr, 05may, 06jun, 07jul, 08aug, : 09sep, 10oct, 11nov, 12dec : WHERE title like '%".$TITLE."%' : ORDER BY `datetime` DESC"; 錯的原因很簡單,dbms都告訴你了,它分不出 SELECT title,author,publisher,isbn 裡的title指的是哪個table的欄位, 01jan.title、02feb.title…欄位名稱都叫title; 同理 WHERE title like '%".$TITLE."%' 這段它也不知道要比哪一個title…雖然這裡的錯誤訊息還沒跑到那裡 解法已經有人說過了,這裡也是騙 P幣XD : 出現的錯誤訊息是: : Column 'title' in field list is ambiguous : 請問我該怎麼改語法呢? : 先謝謝各位前輩! 原PO老師的理論依據應該像這個 http://en.wikipedia.org/wiki/Partition_(database) 其中是有直接複製 TABLE的作法,實作還滿少用到的,但不是沒有。 目前用到這種作法都不是為了效率,通常是備份資料備查, EX:會計未收款資料 (異動頻繁,又需要記錄異動前後的資料…) 該 TABLE 11月的資料在 12月的時候也會修改, 有時候使用者要把 12月異動的資料也算進去,有時候又不要, 為了實作此需求,每個月都會把到上個月的資料通通做成一個新的 TABLE.... 會這麼做,我想可能的原因是舊程式難改、DB備份功能比分割TABLE完善.... 但如果是為了存取效率這麼做… 1.效能改善有限。主要差別應該是能平行處理,但是一顆硬碟的讀寫頭數量是固定的 2.程式不好寫…目前的DBMS能幫忙做的事情不多;也可能只是因為很少寫這類東東XD 3. ...以上兩點已經夠了 如果只是作業,瞭解老師想說的是啥就差不多了吧....我想。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.195.167
文章代碼(AID): #19JehqLh (Database)
文章代碼(AID): #19JehqLh (Database)