特定の構成に添付された項目のリストを取得するストアド プロシージャがあります (各項目は 1 つの構成に添付されています。そうでない場合 (つまり、フィールドがNULL
)、デフォルト構成に添付されていると見なされます (そのフィールドISDEFAULT
は1
) . ページネーションを使用してアイテムを取得したい.ROWNUM
フィールドが1から始まることを思い出したので、私は書いた.
SELECT *
FROM
ITEMS item
WHERE
(ROWNUM - 1) >= 0 and
(ROWNUM - 1) < (0 + 10) and
(item.CONFIGID = 0 or
item.CONFIGID is null and exists (SELECT config.CONFIGID FROM CONFIGURATION config WHERE config.CONFIGID = 0 and config.ISDEFAULT = 1));
このリクエストで返された結果はゼロでした。
私はそれを次のように変更しました:
SELECT item.NAME,
item.ITEMID,
item.CONFIGID,
ROWNUM
FROM
ITEMS item
WHERE
(ROWNUM - 1) >= 0 and
(ROWNUM - 1) < (0 + 10) and
(item.CONFIGID = 0 or
item.CONFIGID is null and exists (SELECT config.CONFIGID FROM CONFIGURATION config WHERE config.CONFIGID = 0 and config.ISDEFAULT = 1));
そしてそれは働いた!ステートメントにを追加するROWNUM
と、SELECT
問題が修正されました。
それから私は試しました:
SELECT *
FROM
ITEMS item
WHERE
ROWNUM >= (0 + 1) and
ROWNUM < (0 + 1 + 10) and
(item.CONFIGID = 0 or
item.CONFIGID is null and exists (SELECT config.CONFIGID FROM CONFIGURATION config WHERE config.CONFIGID = 0 and config.ISDEFAULT = 1));
SELECT *
私はステートメントを書き戻し、を- 1
比較演算子の反対側に移動しました (したがって、それらは になりました+ 1
)。これも同様に機能します。
私の最初のクエリが機能せず、結果がゼロになるのに対し、他の2つは魅力的に機能する理由を誰かが説明できますか?