如何组合左连接和减法?

时间:2015-04-26 14:18:02

标签: mysql

第一个表“职位”包含有关项目,可用金额和价格的信息。

当有人想要购买物品时,系统会找到价格最低的物品的仓位,并在一段时间内为其创建储备。

位置:

id item amount price seller
1  1    1      4     1
2  1    2      5     2 

储量:

id position created_at 
1  1        1430060037 

如果另一个客户想要购买相同的商品,则只有第二个位置可供他使用,因为第一个位置只有一个商品(金额)且该商品已提前预订。但是如果保留#1已经过期,客户可以从第一个位置购买价格的物品。

更新:

位置:

id  item amount price
1   1    2      4
2   1    2      5
3   1    2      6

储量:

id  position  created_at
1   1         1430060037
1   1         1430060038

在这种情况下,我想获得价格为#5的位置#2,因为位置#1的所有项目都是保留的。

1 个答案:

答案 0 :(得分:1)

你的问题不清楚,但我想你想要这样的事情:

SELECT
    `positions`.`amount`,
    MIN(`price`) AS `min_price`,
    COUNT(`reserves`.`id`) AS `reserve_count`
FROM `positions`
    LEFT JOIN `reserves` on `positions`.`id` = `reserves`.`position`
WHERE `positions`.`item` = 1234 -- specify the item here
    AND `created_at` >= NOW() - INTERVAL 60 SECOND
GROUP BY `reserves`.`position`
HAVING `reserve_count` != `amount`