Advertisement
jfgiraud

Mysql, initialisation colonne sortKey en fonction d'une colonne label dans l'ordre des labels

Feb 24th, 2023
1,097
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.04 KB | None | 0 0
  1. set @fieldId := (select id from ruleFields where name='TYPE_CLIENT');
  2.  
  3. set @sortKey := (select sortKey from ruleFieldValues where id_rule_field=@fieldId AND NAME is NULL);
  4.  
  5. UPDATE ruleFieldValues SET sortKey=@sortKey+2 WHERE id_rule_field=@fieldId AND NAME is NULL;
  6.  
  7. REPLACE INTO ruleFieldValues (name, id_rule_field, label, sortKey, tooltip) VALUES
  8.   ('CustomerForDeviceLoan', @fieldId, 'Airbox', @sortKey, 'CustomerForDeviceLoan'),
  9.   ('CustomerForBlister', @fieldId, 'Blister', @sortKey+1, 'CustomerForBlister');
  10.  
  11. SET @row_num := 0;
  12.  
  13. UPDATE ruleFieldValues
  14.     INNER JOIN (
  15.     SELECT id, @row_num := @row_num + 1 AS row_num
  16.     FROM ruleFieldValues
  17.     WHERE id_rule_field=@fieldId AND NAME is not NULL
  18.     ORDER BY label ASC
  19.     ) AS temp_table
  20. ON ruleFieldValues.id = temp_table.id
  21. SET ruleFieldValues.sortKey = temp_table.row_num;
  22.  
  23. SET @maximum := (select max(sortKey) from ruleFieldValues WHERE id_rule_field=@fieldId AND NAME is not NULL);
  24.  
  25. UPDATE ruleFieldValues SET sortKey=@maximum+1  WHERE id_rule_field=@fieldId AND NAME is NULL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement