Partage
  • Partager sur Facebook
  • Partager sur Twitter

PostgresQL - Boucles

Repeter une requête en fonction du nombre de ligne d'une autre requête

    16 janvier 2019 à 13:35:21

    Bonjour a tous,

    J'ai chercher ce sujet sur le forum sans réussite.

    Alors voila, j'aimerais répéter une requête autant de fois qu'il y a de ligne dans une autre requête. 

    Voici un exemple qui ne fonctionne pas : 

    FOR i IN SELECT DISTINCT "valeur_table_1" FROM "schema"."table_1"    // REQUETE_1 : TABLEAU DE 400 lignes
    LOOP
    RETURN QUERY 
          
    SELECT                                                               // REQUETE_2 : TABLEAU DE 1 LIGNE SANS LA BOUCLE
    "valeur_table_2"
    FROM (
       SELECT "valeur_table_2", "XXX" FROM "schema"."table_2"
       WHERE "XXX" NOT IN (
         SELECT DISTINCT "valeur_table_1", "valeur_table_1_et_2" 
         FROM "schema"."table_1" 
         WHERE "valeur_table_1_et_2" = "valeur_table_1"[i]) 
    ) a
    
    END LOOP;

    Globalement, l'idée est de répéter la REQUETE_2 autant de fois qu'il y a de ligne dans la REQUETE_1, en prenant la valeur de la REQUETE_1 (="valeur_table_1") pour l'insérer dans la REQUETE_2.

    Je ne sais pas si cela est bien clair, mais le résultat de la requête devrait être, avec la boucle, de 400 lignes, au lieu de 1.

    Merci à tous :)

    -
    Edité par LacenaireEdwin 16 janvier 2019 à 13:38:04

    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2019 à 17:23:16

      Bonjour,

      Je ne comprends pas trop l'intérêt de ta question ...

      Peux-tu expliquer un peu plus ton contexte et la structure de ta base de données ?

      Je pressens que la boucle (et ici il faudrait plutôt parler de curseur) est inutile tout devrait pouvoir être fait avec une requête.

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      PostgresQL - Boucles

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown