IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Boucle dans une requête SQL


Sujet :

Langage SQL

  1. #1
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Points : 287
    Points
    287
    Par défaut Boucle dans une requête SQL
    Bonjour à tous,

    Je suis un peu bloqué dans la construction d'une requête.
    J'ai besoin de récupérer un champ1 dans une TABLE1 sur lequel je dois boucler pour récupérer les données d'une TABLE2 liées à ce champ1.
    Le tout dans une seule requête.
    J'ai un peu tout essayé,
    Créer un curseur et faire un FETCH dans un REPEAT. Sans parvenir à faire quelque chose qui se tienne au niveau syntaxique.
    CE qui donne, dans mon charabia :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WITH TAB_1
    (SELECT champ1 FROM TABLE1)
     
    boucle
    SELECT champ2 FROM TABLE2 WHERE champ3 = TAB_1.champ1
    NEXT TAB_1
    boucle
    Quelqu'un pourrait-il me décoincer ?
    Merci par avance.

  2. #2
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Vous ne voulez pas faire une bête jointure ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T1.champ1, T2.champ2
    FROM TABLE1 T1
    INNER JOIN TABLE2 T2
        ON T2.champ3 = T1.champ1
    La base !

    P.S. Une table contient des colonnes et non des champs.

  3. #3
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Points : 287
    Points
    287
    Par défaut
    Mon exemple n'est peut-être pas bien choisi pour montrer mon problème.
    Une jointure ne suffit pas,
    il faut réellement que je puisse relancer la 2e requête pour chaque résultat de la 1ère.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par od.dev Voir le message
    Mon exemple n'est peut-être pas bien choisi pour montrer mon problème.
    Une jointure ne suffit pas,
    il faut réellement que je puisse relancer la 2e requête pour chaque résultat de la 1ère.
    Les cas où il faut vraiment faire une boucle (au passage, ta pseudo-syntaxe est un mélange de CTE et de curseur... les deux sont OK, mais il faut choisir l'un ou l'autre) se comptent sur les doigts d'une main. Explique-nous ton cas et on le résoudra, mais partir du principe qu'il faut absolument une boucle c'est prendre le pb à l'envers.

  5. #5
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Points : 287
    Points
    287
    Par défaut
    Oui, mon exemple se base clairement sur l'utilisation d'une CTE,
    dont j'espérais pouvoir me servir du résultat dans une boucle.
    Et cela pour ne pas faire d'aller-retours excessifs entre ma procedure et le moteur SQL, afin d'optimiser le temps de traitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44
  2. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59
  3. Creer une boucle dans une requête ???
    Par fdloisel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2004, 14h05
  4. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo