MySQL:限制JOIN结果

时间:2017-07-21 20:11:33

标签: mysql join group-by

我有以下表格:

order_items
--------------
id     item_id    order_id
1        7          1
2        8          1
3        8          1


items
-------
id     name
2      Parent 2
3      Parent 3
4      Parent 4
7      Thing 7
8      Thing 8
9      Thing 9


item_relationships
-------------------------
child_item_id   parent_item_id
8               3
8               2
8               4

我想要做的是计算有多少order_items,按item_id分组。在这个例子中,我希望得到结果,表明有一个" Thing 7"按顺序和TWO" Thing 8"记录。这里的诀窍是我还需要包含FIRST父母的名字。 (第一个父亲=最小的身份。)我可以进行分组:

SELECT items.name AS orderItemName,
       parentItems.name AS parentItemName,
       COUNT(order_items.id) AS orderItemQty
FROM order_items
  INNER JOIN items ON (items.id = order_items.item_id)
  LEFT JOIN item_relationships ON (item_relationships.child_item_id = items.id)
  LEFT JOIN items AS parentItems ON (parentItems.id = item_relationships.parent_item_id)
WHERE order_items.order_id = 1
GROUP BY order_items.item_id

但这会让我:

orderItemName    parentItemName    orderItemQty
   Thing 7          (null)           1
   Thing 8          Parent 3         6

我希望得到:

orderItemName    parentItemName    orderItemQty
   Thing 7          (null)           1
   Thing 8          Parent 2         2

换句话说,我需要完成的两件事是:

  1. 计算给定订单中相似项目的数量
  2. 获取这些项目的第一个父级的名称
  3. 这可能没有某种子查询吗?

0 个答案:

没有答案