作者andreli (小狗跟正妹是我的死穴)
看板Database
标题Re: [SQL ] 重复table栏位名称 Duplicate column name
时间Fri Oct 30 12:32:55 2009
※ 引述《andreli (小狗跟正妹是我的死穴)》之铭言:
: 标题: [SQL ] 重复table栏位名称 Duplicate column name:
: 最近在修改一个网站, 使用MySQL 5.1.36:
: 在select的时候, 因为原作者在很多资料表上都使用相同名称,
: 像是每个资料表的流水号都叫sn
: 所以我在select join两个资料表的时候因为都使用*来当作欲选取栏位(就是全选),
: 我自己猜想是不是因为这样的关系产生出Duplicate column name 'sn'的错误讯息。
: 如果想要解决, 有什麽好方法吗?
: 还是只能一个一个慢慢select出来, 不要使用*呢?
: 谢谢各位前辈的回覆。
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ 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 p.*, m.* 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
上面是接手人家的程式慢慢找出来可能发生错误的地方的原始码,
错误代码和讯息是1060的Duplicate column name 'sn_'
我将SQL中sub select p.*,m.*的部份改成m.sn_, m.id...就可以正常select了,
两个资料表中栏位的流水号auto increasement都是叫sn_,
我一开始也是往别名错误的地方想, 可是收设了还是不行。
不知道各位前辈有没有别的想法或看法呢?
另外我想问, 所有的资料表流水号叫sn_这样的设计方法好吗?
因为就我自己之前设计时, 每个资料表的流水号名称都会取跟资料表名称有关,
像是member_detail, 我就会取md_sn或md_id这样子, 让我之後好分辨与取值,
但是原本制作这程式的也算一间有点规模的公司,
想请问各位前辈, 这样制作上有什麽好处呢? 还是它在搭配smarty有啥好处呢?
谢谢各位前辈的指教, 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.120.1.190