0

善良な魂からの支援が必要です。サブブロック1またはその他を実行するために必要な結果に基づいて、ロックテーブルブロック内でmysqlクエリを作成(またはコードを実行)しようとしています。使用する予定でしたこれまでのところ、私はこれを持っています

SELECT @myRight := node.rgt, @myLeft := node.lft, @nivel := node.nivel_pag, @grp := node.grp
FROM `tbl_pages_temp` AS node, `tbl_pages_temp` AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND parent.id_pag = 38 AND node.grp =    parent.grp AND node.id_pag != parent.id_pag
ORDER BY node.lft DESC LIMIT 1;

#here I want to use CASE or something else so, if @grp > 1 then do updates/insert block1 otherwise do second block
#block 1
UPDATE tbl_pages_temp SET rgt = rgt + 2 WHERE rgt > @myRight;

UPDATE tbl_pages_temp SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO tbl_pages_temp(menu_pag, lft, rgt, nivel_pag, grp) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2, @nivel + 1, @grp);

#block 2
UPDATE tbl_pages_temp SET rgt = rgt + 2 WHERE rgt > @myLeft;

UPDATE tbl_pages_temp SET lft = left + 2 WHERE lft > @myLeft;

INSERT INTO tbl_pages_temp(menu_pag, lft, rgt, nivel_pag, grp) VALUES('GAME CONSOLES', @myLeft + 1, @myLeft + 2, @nivel + 1, @grp);

UNLOCK TABLES;

この DB ではストア プロシージャを使用できません。これを正しく行っていますか、それとももっと良い方法がありますか?? ありがとう!!!

私の悪い、はい、アイデアは @grp 値に応じていずれかのパラメーターを使用することです。はい、cose がよりコンパクトになると仮定しています。両方の答えを試してみましょう。両方とも良さそうです。

4

1 に答える 1