作者bobju (宝贝猪)
看板Database
标题Re: [SQL ] 重复table栏位名称 Duplicate column name
时间Mon Nov 2 11:27:13 2009
这个要顺便推荐一个好用的函式, 我以前在PHP官网上找到的,
一直用到现在, 觉得实在好用. (再配合上smarty, 要快速打造
一个後台管理具有CRUD的操作页面非常快. 自己就能搞一个简单
的framework)
SQL就照直觉打:
假设ta是主表, tb, tc, td都是与ta关联的副表, 全部都是以sn栏位建立关联.
$sql="
select ta.*,tb.*,tc.*,td.*
from ta
left join tb on ta.sn=tb.sn
left join tc on ta.sn=tc.sn
left join td on ta.sn=td.sn
";
然後:
//$link是资料库连线资源,已建立.
$resultset = new mysql_resultset(mysql_query($sql,$link));
while($b=$resultset->fetch()){
print_r($b);
//这个捞出来的记录就自动帮你将所有栏位按照所属的table分类好,非常省事.
}
//好用的资料查询物件: 取自php官网之mysql_fetch_array的使用手册范例
class mysql_resultset
{
var $results, $map;
function mysql_resultset($results)
{
$this->results = $results;
$this->map = array();
$index = 0;
while ($column = mysql_fetch_field($results))
{
$this->map[$index++] = array($column->table, $column->name);
}
}
function fetch()
{
if ($row = mysql_fetch_row($this->results))
{
$drow = array();
foreach ($row as $index => $field)
{
list($table, $column) = $this->map[$index];
$drow[$table][$column] = $row[$index];
}
return $drow;
}
else
return false;
}
}
※ 引述《andreli (小狗跟正妹是我的死穴)》之铭言:
: 最近在修改一个网站, 使用MySQL 5.1.36
: 在select的时候, 因为原作者在很多资料表上都使用相同名称,
: 像是每个资料表的流水号都叫sn
: 所以我在select join两个资料表的时候因为都使用*来当作欲选取栏位(就是全选),
: 我自己猜想是不是因为这样的关系产生出Duplicate column name 'sn'的错误讯息。
: 如果想要解决, 有什麽好方法吗?
: 还是只能一个一个慢慢select出来, 不要使用*呢?
: 谢谢各位前辈的回覆。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.115.151.184
1F:推 PsMonkey:嗯... 前端语言的解法... 嗯... 有点脱离版旨啦 XD 11/02 13:04