0

1つのテーブルのみをクエリするクエリを効果的に機能させるのに問題があります。テーブルデータの例を次に示します。

ID    NAME     PARENT_ID    SORT_ORDER
1     Home     NULL         1
2     Contact  NULL         3
3     Service  NULL         2
4     Service1 3            0
5     Service3 3            2
6     Service2 3            1

私がやりたいのは、このテーブルから、そのIDの結果の下にPARENT_IDが表示される結果を含むデータを返し、すべての結果をSORT_ORDERに表示することです。上記のデータをクエリで取得する方法は次のとおりです。

ID   NAME     PARENT_ID    SORT_ORDER
1    Home     NULL         1
3    Service  NULL         2
4    Service1 3            0
6    Service2 3            1
5    Service3 3            2
2    Contact  Null         3

これを実現するためのフィードバックは大歓迎です。

敬具、

ポール

4

1 に答える 1

0

私があなたの論理を正しく理解しているなら、あなたはこれを使うことができます:

SELECT
  t1.*
FROM
  yourtable t1 LEFT JOIN yourtable t2
  ON t1.PARENT_ID = t2.ID
ORDER BY
  COALESCE(t2.SORT_ORDER, t1.SORT_ORDER),
  t1.PARENT_ID IS NOT NULL,
  SORT_ORDER

こちらのフィドルをご覧ください。

于 2013-03-26T11:33:24.143 に答える