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

时间:2009-09-25 15:07:45

标签: php mysql

对于第一个表中的每个项目,都有一个'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 :(得分: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

答案 1 :(得分: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

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