WITH句


SQL ServerでWith句といえばCTE系が出てくるが、普通(?)の使い方もできる。
例えば下記のような検索句で、tmpNodeに検索条件付与が必要な時、2度書けばもちろん実現可能だが可読性とメンテ面で不利になる。

SELECT
 E.*,
 FN.name FNAME,
 TN.name TNAME
FROM
 tmpEdge E
LEFT OUTER JOIN
 tmpNode FN
ON
 E.FID = FN.PID
LEFT OUTER JOIN
 tmpNode TN
ON
 E.TID = TN.PID
;

Viewつくりゃ良い場合はView作ればいいのだが、頻度低い場合かな。

WITH node_view AS
 (SELECT * FROM tmpNode WHERE PID > -1)

SELECT
 E.*,
 FN.name FNAME,
 TN.name TNAME
FROM
 tmpEdge E
LEFT OUTER JOIN
 node_view FN
ON
 E.FID = FN.PID
LEFT OUTER JOIN
 node_view TN
ON
 E.TID = TN.PID
;
カテゴリー: 開発 タグ: パーマリンク