« GLPI/Script SQL » : différence entre les versions

Aller à la navigation Aller à la recherche
mAucun résumé des modifications
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
Voici quelques exemples de script SQL pour traiter certains aspects.
Voici quelques exemples de script SQL pour traiter certains aspects.


== Exemple de script SQL ==
== Ticket et gestion du technicien affecté ==


=== Affichage de certains tickets d'un technicien ===
=== Affichage de certains tickets d'un technicien ===
Affichage des tickets d'un technicien, dont le statut n'est ni résolu ni clos :
Affichage des tickets d'un technicien :
* avec affichage du numéro du ticket et du numéro du technicien ;
* avec affichage du numéro du ticket et du numéro du technicien ;
* dont le statut n'est ni résolu ni clos ;
* dont le statut n'est ni résolu ni clos ;
* dont la catégorie a pour numéro 33 ;
* dont la catégorie a pour numéro 33 ;
* ...
* dont un des techniciens affecté a pour numéro 560.


<source>
<source>
SELECT DISTINCT glpi_tickets_users.tickets_id, glpi_tickets_users.users_id FROM glpi_tickets_users
SELECT DISTINCT glpi_tickets_users.tickets_id, glpi_tickets_users.users_id  
WHERE glpi_tickets_users.tickets_id in
FROM glpi_tickets_users
(SELECT DISTINCT glpi_tickets_users.tickets_id  
WHERE glpi_tickets_users.tickets_id
FROM glpi_tickets, glpi_tickettasks, glpi_tickets_users, glpi_itilcategories
  IN (
WHERE (  
      SELECT DISTINCT glpi_tickets_users.tickets_id  
(
      FROM glpi_tickets, glpi_tickettasks, glpi_tickets_users, glpi_itilcategories
glpi_tickets.status = 1  
      WHERE (  
OR glpi_tickets.status = 2
              (
OR glpi_tickets.status = 3
                  glpi_tickets.status = 1  
OR glpi_tickets.status = 4
              OR glpi_tickets.status = 2
)
              OR glpi_tickets.status = 3
AND glpi_tickets.id = glpi_tickets_users.tickets_id
              OR glpi_tickets.status = 4
AND glpi_tickets.itilcategories_id = glpi_itilcategories.id
              )
AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets.id = glpi_tickets_users.tickets_id
AND glpi_tickets_users.users_id = 762
            AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets_users.users_id = 560
            )
       )
       )
)
  AND glpi_tickets_users.users_id = 560
AND glpi_tickets_users.users_id = 762
;
;
</source>
</source>
Ligne 41 : Ligne 42 :


<source>
<source>
UPDATE glpi_tickets_users SET users_id = 762
UPDATE glpi_tickets_users
WHERE glpi_tickets_users.tickets_id in
SET users_id = 762
(SELECT DISTINCT glpi_tickets_users.tickets_id  
WHERE glpi_tickets_users.tickets_id
FROM glpi_tickets, glpi_tickettasks, glpi_itilcategories
  IN (
WHERE (  
      SELECT DISTINCT glpi_tickets_users.tickets_id  
(
      FROM glpi_tickets, glpi_tickettasks, glpi_itilcategories
glpi_tickets.status = 1  
      WHERE (  
OR glpi_tickets.status = 2
              (
OR glpi_tickets.status = 3
                  glpi_tickets.status = 1  
OR glpi_tickets.status = 4
              OR glpi_tickets.status = 2
)
              OR glpi_tickets.status = 3
AND glpi_tickets.id = glpi_tickets_users.tickets_id
              OR glpi_tickets.status = 4
AND glpi_tickets.itilcategories_id = glpi_itilcategories.id
              )
AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets.id = glpi_tickets_users.tickets_id
AND glpi_tickets_users.users_id = 560
            AND glpi_tickets.itilcategories_id = 33
)
            AND glpi_tickets_users.users_id = 560
)
            )
AND glpi_tickets_users.users_id = 560
      )
  AND glpi_tickets_users.users_id = 560
;
</source>
 
== Tâche et gestion du technicien affecté ==
 
=== Modification d'affectation de certaines tâches d'un technicien ===
Remplacement du technicien (560) de certaines tâches par un autre technicien (762) :
* dont le statut n'est ni résolu ni clos ;
* dont la catégorie a pour numéro 33 ;
* dont le technicien affecté au ticket a pour numéro 762 ;
* dont le technicien affecté à la tâche a pour numéro 560.
 
<source>
UPDATE glpi_tickettasks
SET users_id_tech = 762
WHERE tickets_id
  IN (
      SELECT DISTINCT glpi_tickets_users.tickets_id
      FROM glpi_tickets, glpi_tickets_users, glpi_itilcategories
      WHERE (
              (
                  glpi_tickets.status = 1
              OR glpi_tickets.status = 2
              OR glpi_tickets.status = 3
              OR glpi_tickets.status = 4
              )
            AND glpi_tickets.id = glpi_tickets_users.tickets_id
            AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets_users.users_id = 762
            )
      )
  AND users_id_tech=560
;
;
</source>
</source>
Ligne 67 : Ligne 101 :


<source>
<source>
UPDATE glpi_tickets SET status= "1",takeintoaccount_delay_stat="0"  
UPDATE glpi_tickets  
WHERE id IN (
SET status= "1", takeintoaccount_delay_stat = "0"  
SELECT glpi_tickets.id  
WHERE id  
FROM glpi_tickets LEFT JOIN glpi_tickets_users ON glpi_tickets.id = glpi_tickets_users.tickets_id AND glpi_tickets_users.type = "2"  
  IN (
WHERE glpi_tickets.id IN (
      SELECT glpi_tickets.id  
SELECT glpi_tickets.id  
      FROM glpi_tickets LEFT JOIN glpi_tickets_users ON glpi_tickets.id = glpi_tickets_users.tickets_id AND glpi_tickets_users.type = "2"  
FROM glpi_tickets LEFT JOIN glpi_groups_tickets ON glpi_tickets.id = glpi_groups_tickets.tickets_id  
      WHERE glpi_tickets.id  
WHERE glpi_tickets.status = "2" AND glpi_groups_tickets.groups_id = "1" AND glpi_tickets.is_deleted = "0"
        IN (
)
            SELECT glpi_tickets.id  
AND glpi_tickets_users.type IS NULL
            FROM glpi_tickets LEFT JOIN glpi_groups_tickets ON glpi_tickets.id = glpi_groups_tickets.tickets_id  
)
            WHERE glpi_tickets.status = "2" AND glpi_groups_tickets.groups_id = "1" AND glpi_tickets.is_deleted = "0"
            )
        AND glpi_tickets_users.type IS NULL
      )
;
</source>
</source>



Dernière version du 23 janvier 2023 à 22:29

Voici quelques exemples de script SQL pour traiter certains aspects.

Ticket et gestion du technicien affecté

Affichage de certains tickets d'un technicien

Affichage des tickets d'un technicien :

  • avec affichage du numéro du ticket et du numéro du technicien ;
  • dont le statut n'est ni résolu ni clos ;
  • dont la catégorie a pour numéro 33 ;
  • dont un des techniciens affecté a pour numéro 560.
SELECT DISTINCT glpi_tickets_users.tickets_id, glpi_tickets_users.users_id 
FROM glpi_tickets_users
WHERE glpi_tickets_users.tickets_id
   IN (
      SELECT DISTINCT glpi_tickets_users.tickets_id 
      FROM glpi_tickets, glpi_tickettasks, glpi_tickets_users, glpi_itilcategories
      WHERE ( 
               (
                  glpi_tickets.status = 1 
               OR glpi_tickets.status = 2
               OR glpi_tickets.status = 3
               OR glpi_tickets.status = 4
               )
            AND glpi_tickets.id = glpi_tickets_users.tickets_id
            AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets_users.users_id = 560
            )
      )
   AND glpi_tickets_users.users_id = 560
;

Modification d'affectation de tickets d'un technicien

Remplacement du technicien (560) de certains tickets par un autre technicien (762) :

  • dont le statut n'est ni résolu ni clos ;
  • dont la catégorie a pour numéro 33 ;
  • dont le technicien affecté a pour numéro 560 ;
UPDATE glpi_tickets_users
SET users_id = 762
WHERE glpi_tickets_users.tickets_id
   IN (
      SELECT DISTINCT glpi_tickets_users.tickets_id 
      FROM glpi_tickets, glpi_tickettasks, glpi_itilcategories
      WHERE ( 
               (
                  glpi_tickets.status = 1 
               OR glpi_tickets.status = 2
               OR glpi_tickets.status = 3
               OR glpi_tickets.status = 4
               )
            AND glpi_tickets.id = glpi_tickets_users.tickets_id
            AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets_users.users_id = 560
            )
      )
   AND glpi_tickets_users.users_id = 560
;

Tâche et gestion du technicien affecté

Modification d'affectation de certaines tâches d'un technicien

Remplacement du technicien (560) de certaines tâches par un autre technicien (762) :

  • dont le statut n'est ni résolu ni clos ;
  • dont la catégorie a pour numéro 33 ;
  • dont le technicien affecté au ticket a pour numéro 762 ;
  • dont le technicien affecté à la tâche a pour numéro 560.
UPDATE glpi_tickettasks
SET users_id_tech = 762
WHERE tickets_id 
   IN (
      SELECT DISTINCT glpi_tickets_users.tickets_id 
      FROM glpi_tickets, glpi_tickets_users, glpi_itilcategories
      WHERE ( 
              (
                  glpi_tickets.status = 1 
               OR glpi_tickets.status = 2
               OR glpi_tickets.status = 3
               OR glpi_tickets.status = 4
              )
            AND glpi_tickets.id = glpi_tickets_users.tickets_id
            AND glpi_tickets.itilcategories_id = 33
            AND glpi_tickets_users.users_id = 762
            )
      )
   AND users_id_tech=560
;

Requête

Référence :

UPDATE glpi_tickets 
SET status= "1", takeintoaccount_delay_stat = "0" 
WHERE id 
   IN (
      SELECT glpi_tickets.id 
      FROM glpi_tickets LEFT JOIN glpi_tickets_users ON glpi_tickets.id = glpi_tickets_users.tickets_id AND glpi_tickets_users.type = "2" 
      WHERE glpi_tickets.id 
         IN (
            SELECT glpi_tickets.id 
            FROM glpi_tickets LEFT JOIN glpi_groups_tickets ON glpi_tickets.id = glpi_groups_tickets.tickets_id 
            WHERE glpi_tickets.status = "2" AND glpi_groups_tickets.groups_id = "1" AND glpi_tickets.is_deleted = "0"
            )
         AND glpi_tickets_users.type IS NULL
      )
;

Voir aussi

  •