[英]SQL - ordering results by child attribute in a parent-child join
我想知道以下情況是否有解決方案。
我有一個表SALE(id, client_name, total)
和另一個表SALE_ITEM (id, sale_id, item_name, item_price)
。 SALE
和SALE_ITEM
表之間的關系是1:n。
如果我要在SALE
和SALE_ITEM
之間進行SALE_ITEM
,我是否仍可以(僅通過SQL)檢索每次銷售的item_name排序的結果?
例如:
SALE
id client_name total
1 John 200
2 Aaron 1400
3 Christian 500
SALE_ITEM
id sale_id item_name item_price
1 1 Ruler 100
2 1 Crayon 100
3 2 Bike 1100
4 2 Gloves 300
5 3 Jeans 500
SALE JOIN SALE_ITEM (afer the ordering by sale_item#name field)
sale_id sale_client_name sale_total sale_item_id sale_item_name
2 Aaron 1400 3 Bike
2 Aaron 1400 4 Gloves
1 John 200 2 Crayon
1 John 200 1 Ruler
3 Christian 500 5 Jeans
從上面可以看到,結果在SALE_ITEM#item_name
字段之后SALE_ITEM#item_name
(請參閱Bike,...,Crayon,...,Jeans),並提及SALE_ITEM
屬於同一SALE
的SALE_ITEM
條目對彼此。
這應該為您提供所需順序的行:
SELECT
S.*, SI.*
FROM
SALE S JOIN SALE_ITEM SI
ON S.id = SI.sale_id JOIN
(select SALE_ITEM.sale_id, min(item_name) as min_name
from SALE_ITEM
group by SALE_ITEM.sale_id) SI_MIN
ON S.id=SI_MIN.sale_id
ORDER BY SI_MIN.min_name, SI.id
我會按照min_name
交易的min_name
來排序首min_name
,然后再按SI.id排序。 請看這個小提琴 。
select sale_id, client_Name, total, sale_item.id, item_name
from sale
inner join sale_item on sale.id = sale_item.sale_id
order by sale.id, item_name
SELECT *
FROM SALE S
JOIN SALE_ITEM SI
ON S.id = SI.sale_id
ORDER BY SI.sale_id, SI.item_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.