我有一个带有赛事ID的数据库。现在,我希望每1蒲式耳(id)中不超过4支队伍。因此,如果在poule_id 1中有4个团队,则需要将其放在poule_id 2中,如果在poule_id 2中有4个团队,则需要转到poule_id 3等。

poule table

到目前为止,我只选择了poule_id。

   $sql = "SELECT poule_id FROM `tbl_teams` WHERE poule_id IS NOT NULL";
    $stmt = $this->db->prepare($sql);
    $stmt->execute();
    $teams = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo "<pre>";
    var_dump($teams);


这让我:

array(9) {
  [0]=>
  array(1) {
    ["poule_id"]=>
    string(1) "1"
  }
  [1]=>
  array(1) {
    ["poule_id"]=>
    string(1) "1"
  }
  [2]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
  [3]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
  [4]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
  [5]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
  [6]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
  [7]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
  [8]=>
  array(1) {
    ["poule_id"]=>
    string(1) "0"
  }
}


现在我陷入困境,因为我找不到如何计算poule_id 1中有多少支球队。

很抱歉被擦洗。
提前致谢

最佳答案

只要您的插入逻辑保持不变,就可以使用类似以下的内容:

select if(
    exists(select max(poule_id) from tbl_teams group by poule_id having count(poule_id) < 4),
    max(poule_id),
    max(poule_id) +1
) use_id
from tbl_teams;


要获取poule_id,您应该在下一次插入时使用(作为别名use_id)。只要您仅使用此代码来获取下一个ID,就可以了。当然,请在您的特定用例中进行测试,以确保它能按预期工作。

关于php - 计算数据库中有多少个相同的值,如果达到数量则增加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44286417/

10-11 06:30