我有以下表格:
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
换句话说,我需要完成的两件事是:
这可能没有某种子查询吗?