这个函数如何写呢?

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家

我在USERS表中增加了一个字需user_admin,用于存此会员属于哪个管理员的ID,
现在我想在提交订单程序中需要做一个以下功能的函数:
1.提交订单时,根据会员的ID,在USERS表中查询,取得相对应的管理员ID,
2.然后根据管理员的ID,在管理员admin_user表中 查询办事处的ID(agency_id)),取得agency_id。
请高手帮忙一下,小弟不懂写,谢谢。

回答:


占个位,等会帮你贴出sql语句


  1. $agent_id = $db->getOne("select a.agent_id from " . $ecs->table('admin_user') . " as a left join " . $ecs->table('users') . " as u on u.user_admin=a.user_id where u.user_id='$_SESSION[user_id]'" );
复制代码

这个逻辑好象不对
你还是按照要求分2条sql语句写吧。要考虑上万条数据的时候,复杂不会大。
管理员表数据不会很大,可以外面再cache一下。较少频繁读取admin_user表

占个位,等会帮你贴出sql语句
ecshopkaifa 发表于 2012-2-11 09:28

这个sql既使上午万的数据量也不存在效率问题的,条件和关链都是主键,不可能有效率问题的

user表中的admin_user需要建索引,这个是优化的常识



非常感谢楼上的……。
我这样写,但不懂哪里错,能运行,但达不到结果。请帮我看一下,问题出在哪里。

flow.php 中这样调用

'agency_id' => get_agency_by_bsc()

lib_order.php 我这么写,

/**
* 查询订单属于哪个办事处管辖

**/
function get_agency_by_bsc()
{

$sql = "SELECT user_admin FROM ".$GLOBALS['ecs']->table('users')." WHERE user_id = '$_SESSION[user_id]'";
$res = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($res))
{
$users= $row['user_admin'];
}

$sql = "SELECT agency_id FROM ".$GLOBALS['ecs']->table('admin_user')." WHERE user_id = '$users' ";
$res = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($res))
{
$agency_id = $row['agency_id'];
}

}

那个SQL好像有问题

谢谢楼上的,能帮看看吗?

顶一下,求帮忙一下,搞了几天了,搞不出来。

/**
* 查询订单属于哪个办事处管辖

**/
function get_agency_by_bsc()
{
$agency_id =0;
$sql = "SELECT user_admin FROM ".$GLOBALS['ecs']->table('users')." WHERE user_id = '$_SESSION[user_id]'";
$user_admin = $GLOBALS['db']->getOne($sql);
if( $user_admin)
{
$sql = "SELECT agency_id FROM ".$GLOBALS['ecs']->table('admin_user')." WHERE user_id = '$user_admin' ";
$agency_id = $GLOBALS['db']->getOne($sql);
}
return$agency_id ;

}