推 andreli:對, 他兩個表的sn_不一樣...所有表的流水號都叫sn_...>"< 11/02 00:09
※ 引述《andreli (小狗跟正妹是我的死穴)》之銘言:
: ※ 引述《andreli (小狗跟正妹是我的死穴)》之銘言:
: : 標題: [SQL ] 重複table欄位名稱 Duplicate column name:
: : 最近在修改一個網站, 使用MySQL 5.1.36:
: : 在select的時候, 因為原作者在很多資料表上都使用相同名稱,
: : 像是每個資料表的流水號都叫sn
: : 所以我在select join兩個資料表的時候因為都使用*來當作欲選取欄位(就是全選),
: : 我自己猜想是不是因為這樣的關係產生出Duplicate column name 'sn'的錯誤訊息。
: : 如果想要解決, 有什麼好方法嗎?
: : 還是只能一個一個慢慢select出來, 不要使用*呢?
: : 謝謝各位前輩的回覆。
: : --
: : ◆ From: 221.120.65.208
: : 推 rushcat:SELECT TableA.*, TableB.* FROM ... 這樣可以嗎? 10/29 16:19
: : → grence:select應該沒問題,大概是where, order或哪要比對造成混淆 10/29 18:44
: : → andreli:一樓說的方法不行, 我最後使用一個一個列出就可以了... 10/29 22:16
: : 推 rushcat:應該是二樓說的 不然alias設好 不應該會出現這種問題阿@"@ 10/29 23:01
: 我列一下原始的SQL,
: --SELECT COUNT(*) _count_ FROM (
SELECT COUNT(1) _count_ FROM (
: -- SELECT p.*, m.* FROM cmn_product p
SELECT p.product_hits FROM cmn_product p
: JOIN cmn_member m ON p.owner_ = m.sn_
: WHERE p.enabled_ = 1 AND p.visible_ = 1 AND m.enabled_ = 1 AND
: m.verify_ = 1 AND m.advance_ = 1
: GROUP BY m.name_
: ORDER BY p.product_hits DESC
: ) t
你的問題我沒碰過。
不撈沒用到的欄位通常是好習慣,
但是我不知道你的狀況,憑感覺亂寫的,不一定能用…
欄位名稱重複很常見,命名太有創意有時是困擾。
但是,JOIN... p.owner_ = m.sn_ 這有點怪,兩個表的 sn_是不一樣的東西?
我也不知道最後都加底線有什麼用
: 上面是接手人家的程式慢慢找出來可能發生錯誤的地方的原始碼,
: 錯誤代碼和訊息是1060的Duplicate column name 'sn_'
: 我將SQL中sub select p.*,m.*的部份改成m.sn_, m.id...就可以正常select了,
這很謎....
改了之後有另給別名嗎? m.sn_ sn1, p.sn_ sn2 ...之類的?
: 兩個資料表中欄位的流水號auto increasement都是叫sn_,
: 我一開始也是往別名錯誤的地方想, 可是收設了還是不行。
: 不知道各位前輩有沒有別的想法或看法呢?
: 另外我想問, 所有的資料表流水號叫sn_這樣的設計方法好嗎?
: 因為就我自己之前設計時, 每個資料表的流水號名稱都會取跟資料表名稱有關,
: 像是member_detail, 我就會取md_sn或md_id這樣子, 讓我之後好分辨與取值,
: 但是原本製作這程式的也算一間有點規模的公司,
: 想請問各位前輩, 這樣製作上有什麼好處呢? 還是它在搭配smarty有啥好處呢?
: 謝謝各位前輩的指教, 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.201.238