簡體   English   中英

SQL-在父子聯接中按子屬性對結果進行排序

[英]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) SALESALE_ITEM表之間的關系是1:n。

如果我要在SALESALE_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屬於同一SALESALE_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM