ツリー内にいくつかの要素があります(Jquery Nested Sortable)。このツリーには 2 つのタイプがあります。ノードを別のタイプの別のノードにドラッグすると、アイテムとその子を新しい親に更新したいと考えています。いくつかのphpコードで動作するようになりましたが、多くのSQL更新を実行したくありません. そこで、データベースに仕事を任せることにしました。
SQLで更新機能を繰り返そうとしています。しかし、私はそれを機能させることができません。誰かが私を助けてくれることを願っています:
REPEAT
UPDATE elements a, elements b
SET a.type=b.type
WHERE a.parent_id=b.id
AND a.type<>b.type
AND a.parent_id<>0
UNTIL ROW_COUNT()=0
END REPEAT;
update ステートメントは魔法のように機能しますが、一度しか機能しません。変更 (row_count) が見つからなくなるまで、クエリを何度も実行したいと考えています。
--- 更新: WojtusJ からのコメントに対する反応 PhpMyAdmin の SQL ウィンドウ内で次のことを試しました。
DROP PROCEDURE IF EXISTS UpdateElements()
CREATE PROCEDURE UpdateElements();
BEGIN
DECLARE cnt;
REPEAT
SELECT count(*) AS cnt INTO @cnt
FROM elements AS a
JOIN elements AS b
ON (a.parent_id=b.id AND a.type<>b.type AND a.parent_id<>0);
UPDATE elements a, elements b
SET a.type=b.type
WHERE a.parent_id=b.id
AND a.type<>b.type
AND a.parent_id<>0;
UNTIL @cnt=0 END REPEAT;
END
CALL UpdateElements()