SELECT a.* , b.* , c.*
FROM `資料表1` as a
JOIN `資料表2` as b ON a.`索引欄位`= b.`索引欄位`
JOIN `資料表3` as c ON b.`索引欄位`= c.`索引欄位`
WHERE a.欄位='值' AND ….
「left join」代表以左邊為主,順便到右邊撈撈看有無指定的資料。
「right join」代表以右邊為主,順便到左邊撈撈看有無指定的資料。
「join」代表兩邊都要同時有資料,否則該筆資料不會出現。
以本例而言,讀出報名者編號,順便讀出報名者資料的寫法:
//區塊主函數:列出所報者
function list_signup($options)
{
global $xoopsDB;
if ($_GET['action_id']) {
$signups_tbl = $xoopsDB->prefix('signups');
$users_tbl = $xoopsDB->prefix('users');
$action_id = intval($_GET['action_id']);
$sql = "SELECT a.*, b.* FROM `{$signups_tbl}` AS a
JOIN `{$users_tbl}` as b ON a.`uid` = b.`uid`
WHERE a.`action_id` = '{$action_id}'";
$result = $xoopsDB->query($sql) or web_error($sql);
$signups = [];
while ($val = $xoopsDB->fetchArray($result)) {
$signups[] = $val;
}
return $signups;
}
}