推 PsMonkey:嗯... 前端語言的解法... 嗯... 有點脫離版旨啦 XD 11/02 13:04
這個要順便推薦一個好用的函式, 我以前在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