【问题标题】:count rows from another join table计算另一个连接表中的行数
【发布时间】:2021-07-22 21:22:21
【问题描述】:

我创建了两个表。一个episode 表和一个season 表,我想知道如何选择和显示每个季节的剧集计数或将它们保存在season.episodes_count 中这样做的正确方法或查询是什么?

try {
    $stmt = $db->prepare("SELECT * FROM `season` WHERE season.show_id = '" . $show_id . "' ORDER BY season_number DESC");
    // how to select episodes_count?
    $stmt->execute();
    $seasons = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    echo $e;
}

【问题讨论】:

  • 从表 season 中删除 episodes_count。将season_id 添加到表episode 中。然后JOIN 两个表都使用COUNT()
  • 警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDOMySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your dataEscaping is not enough!
  • @B001ᛦ 你的意思是左加入episode on season AS episodes_count?
  • @B001ᛦ 当我在节目页面中没有 season_id 并循环显示它们时,我如何按季节对剧集进行分组?

标签: php mysql sql pdo


【解决方案1】:

您好,没有要测试的数据库,这没有经过测试,但类似这样:

    $stmt = $db->prepare("
    SELECT se.id,
    se.season_number,
    COUNT(es.id) AS episodes_count
    FROM season AS se
    LEFT JOIN espisode AS es ON (se.id = es.season_id)
    WHERE se.show_id = $show_id
    ORDER BY se.season_number DESC
    ");

【讨论】:

  • 它只在季节回归。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 2015-03-02
  • 1970-01-01
相关资源
最近更新 更多