mysql - 如何结合左连接和减法?

标签 mysql

第一个表“Positions”包含有关商品、可用数量和价格的信息。

当有人想要购买某件商品时,系统会找到该商品价格最低的位置,并为其创建一段时间的储备。

职位:

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

储备:

id position created_at 
1  1        1430060037 

如果另一个客户想要购买相同的商品,则只有第二个位置可供他使用,因为第一个位置只有一个商品(数量),并且该商品已被提前预订。但如果 R​​eserve#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

在本例中,我想获取位置#2 和价格#5,因为位置#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`

关于mysql - 如何结合左连接和减法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878779/

相关文章:

mysql - 为什么有索引的 MySQL 查询速度很慢?

mysql - knex 使用 Promise 同步两个 mysql 查询

mysql - 具体外键解释

php - 将 CURRENT_TIMESTAMP 格式化为 AM & PM

php - 将输入表单更改为文本区域而不影响数据库

php - MySQL,结合 DISTINCT 和 JOIN

php - 对 Restful 架构进行分组

mysql - “括号不平衡”正则表达式错误继续发生-我无法确定失败的方式

mysql - 如何从 Rails 迁移(针对 MySQL)获取更改的 sql 脚本?

c# - 使用 asp.net c# MySQL INSERT INTO Query 中的神秘错误