3

会社の Web サイトには 5 人の営業担当者がいます。今では、クエリが来るたびに、次の比率で分散する必要があります。

SalesA : SalesB : SalesC : SalesD : SalesE = 1 : 2 : 1 : 1 : 1

データベースとしてmysqlを使用して、phpでWebサイトを作成しました。

1.データベースを使用せずに上記を達成する方法はありますか

2.データベースが必要な場合に最適なデータベース設計は何ですか。

前もって感謝します

4

3 に答える 3

2

このロジックは、DBレベルではなくPHPコードで実現する必要があります。

于 2012-09-24T06:33:53.190 に答える
1

挿入する行のデータベース ID の 6 のモジュロ(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

テーブルを作成するには、リレーショナル データを使用する方法と使用しない方法の 2 つの方法があります。

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 に答える