【问题标题】:getting data from 2 tables with one-to-many relation using limit and offset on a 'master' table使用“主”表上的限制和偏移量从具有一对多关系的 2 个表中获取数据
【发布时间】:2020-12-18 14:53:16
【问题描述】:

这看起来很简单,所以我有点不好意思问,但这里是:我有 2 个表 - 订单和项目(订单)。一个订单可以有一个或多个项目,我想使用 LIMIT 来获取例如前 10 个订单,也可能使用 OFFSET,问题是:如何创建一个可以做到这一点的查询?例如,如果订单 1 有 2 件商品,订单 2:1 件,订单 3:2 件,订单 4:1 件,我需要前 3 个订单,预期结果将是:

  1. 订购 1 件商品 1
  2. 订购 1 件商品 2,
  3. 订购 2 件商品 1,
  4. 订购 3 件商品 1,
  5. 订购 3 件商品 2

【问题讨论】:

  • 在 cte 或子查询中获取 10 个订单,然后加入 items 表..或者我错过了什么
  • P.Salmon 我不能使用 CTE (MySQL 5.7),但是一旦我搬到更好的网络主机上,我肯定会尝试使用它。你能详细说明一下子查询吗?我还在学习 MySQL - 让它成为一个答案,如果你不介意我会接受它?

标签: mysql limit one-to-many


【解决方案1】:

使用子查询来限制和给定

MariaDB [sandbox]> select * from cat_books;
+--------+-------+
| idbook | name  |
+--------+-------+
|      1 | book1 |
|      2 | book2 |
|      3 | book3 |
|      4 | book4 |
+--------+-------+
4 rows in set (0.001 sec)

MariaDB [sandbox]> select * from books_sold;
+---------+--------+--------+
| id_sold | idbook | iduser |
+---------+--------+--------+
|       1 |      1 |      1 |
|       2 |      2 |      1 |
|       3 |      1 |      2 |
|       4 |      1 |      3 |
|       4 |      3 |      5 |
+---------+--------+--------+
5 rows in set (0.001 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> select *
    -> from
    -> (SELECT * FROM CAT_books order by idbook limit 2) cb
    -> join
    -> books_sold bs on bs.idbook = cb.idbook
    -> order by cb.idbook;
+--------+-------+---------+--------+--------+
| idbook | name  | id_sold | idbook | iduser |
+--------+-------+---------+--------+--------+
|      1 | book1 |       3 |      1 |      2 |
|      1 | book1 |       4 |      1 |      3 |
|      1 | book1 |       1 |      1 |      1 |
|      2 | book2 |       2 |      2 |      1 |
+--------+-------+---------+--------+--------+
4 rows in set (0.001 sec)

【讨论】:

  • 啊,这样!我一直在尝试这样的东西,但是我错过了在子查询中放置一个 LIMIT !亲爱的,我需要休息!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多