3

我在公司网站上有 5 个销售人员。现在,当有查询时,它应该按以下比例分配

销售A : 销售B : 销售C : 销售D : 销售E = 1 : 2 : 1 : 1 : 1

我用 mysql 作为数据库在 php 中创建了我的网站。

1.是否有可能在不使用数据库的情况下实现上述目标

2.如果需要数据库,最好的数据库设计是什么。

提前致谢

4

3 回答 3

2

这个逻辑必须在 PHP 代码中实现,而不是在数据库级别。

于 2012-09-24T06:33:53.190 回答
1

获取要插入的行的数据库 ID 的六 (1+2+1+1+1)模数。然后根据此分配销售人员。

// Quick and dirty example
switch($nextId % 6) {
    case 0:
        $salesperson = 'SalesA';
        break;
    case 1:
    case 2:
        $salesperson = 'SalesB';
        break;
    case 3:
        $salesperson = 'SalesC';
        break;
    case 4:
        $salesperson = 'SalesD';
        break;
    case 5:
        $salesperson = 'SalesE';
        break;
}

这也可以通过使用AFTER INSERT触发器在数据库级别完成。

于 2012-09-24T06:40:37.323 回答
0

数据库设计:

teams

id   title  ratio
1    TeamA  1
2    TeamB  2
3    TeamC  1
4    TeamD  1
5    TeamE  1

可能有两种创建表的方法:使用或不使用关系数据

enquiries

id   team_id enquiry
1    1       something
2    2       something else
3    2       something
4    3       something else

在这种情况下,当您将数据插入查询表时,您应该注意团队比例。

样本:

SELECT e.id AS enquiry_id, e.enquiry, t.title 
FROM enquiries e 
JOIN teams t
  ON t.id=e.team_id 

您也可以选择非关系查询表

enquiries

id   enquiry
1    something
2    something else
3    something

对于此表,您在选择查询时必须关心团队比例

样本:

$teams = array();

$query = "SELECT id, title, ratio FROM teams";
$sql = $mysqli->query($query);
while($row = $sql->fetch_assoc()) {
    $teams[] = $row;
}

$query = "SELECT * FROM enquiries";
$sql = $mysqli->query($query);

$team = 0;
$i    = 0;
while($row = $sql->fetch_assoc()) {
    if($i >= $teams[$team]['ratio']) {
        $team = $team == count($teams) ? 0 : ($team + 1);

        $i = 0;
    }

    $teams[$team]['enquiries'][] = $row;
    $i++;
}

print_r($teams);
于 2012-09-24T07:30:59.460 回答