首页 文章

将数据库值与另一个表中的行数进行比较

提问于
浏览
1

对于第一个表中的每个项目,都有一个'numberOf'字段 . 此字段的值在相关表中必须具有相同的行数 . 这些就像预订行,因此多个用户可以同时预订该项目 . 这种同步有时会消失,并且行数比“numberOf”字段变量多,反之亦然 .

所以我想显示一个表,从第一个表中输出'numberOf',以及从另一个表中输出与它对应的行数 . 它们通过Item ID链接 . 希望这不会太混乱 . 使用do while循环输出查询 . 这是我到目前为止的查询:

$querySync = sprintf("SELECT 
                          COUNT(reserve_id), item_id, details, numberOf
                      FROM 
                          reservations     
                      JOIN 
                          items ON item_id = itemID_reserved                    
                      WHERE 
                          itemID_reserved = 1 ");

所以此刻它会计算预订表中的行数 . 然后它加入items表,这样我就可以显示描述和numberOf等 . 当然它只输出ID为1的项目 . 但我似乎无法通过每个项目,检查它的numberOf,和将它与预留表中的行数进行比较 .

我们的想法是将它全部放在一列上,如果它不同步则打印在行的末尾 . 然后,我需要重建预留表中的行以匹配numberOf .

对不起,这是一个很长的!

2 回答

  • 0

    直接计算哪些项目“不同步”可能更容易:

    select i.item_id
    from reservations r JOIN items i on (i.item_id = r.itemID_reserved)
    group by i.item_id
    having count(r.itemID_reserved) > i.numberOf
    

    我在假设哪些表有哪些字段,但它应该足够说明 .

  • 1
    SELECT  COUNT(reserve_id), item_id, details, numberOf,
            COUNT(reserve_id) > numberOf AS overbook
    FROM    items
    LEFT JOIN
            reservations
    ON      itemID_reserved = item_id
    GROUP BY
            item_id
    

相关问题