1

以下の場合の解決策があれば教えていただきたいです。

テーブルSALE(id, client_name, total) と別のテーブルがありますSALE_ITEM (id, sale_id, item_name, item_price)SALEとテーブルの関係SALE_ITEMは 1:n です。

SALEとを結合した場合、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フィールド (Bike、...、Crayon、...、Jeans を参照)の後に並べられSALE_ITEMており、同じフィールドに属するエントリがSALE互いに隣り合っていることに注意してください。

4

3 に答える 3

1

これにより、必要な順序で行が表示されます。

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、次に SI.id で並べ替えます。このフィドルを見てください。

于 2013-01-07T19:24:59.797 に答える
0
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
于 2013-01-07T18:02:07.727 に答える
0
SELECT * 
FROM SALE S
 JOIN SALE_ITEM SI
   ON S.id = SI.sale_id
 ORDER BY SI.sale_id, SI.item_name 
于 2013-01-07T18:02:22.110 に答える