作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 重复table栏位名称 Duplicate column name
时间Sun Nov 1 23:57:17 2009
※ 引述《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
1F:推 andreli:对, 他两个表的sn_不一样...所有表的流水号都叫sn_...>"< 11/02 00:09