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 :

Calcul ligne par ligne sur le résultat d'une requête


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Calcul ligne par ligne sur le résultat d'une requête
    Bonjour,

    J'ai un petit problème qui sort de mes sentiers battus limités aux insert, select, update ...

    J'aimerai récupérer les n premières lignes répondant à la condition sum(colonne)=0.

    Prenons un exemple cela sera plus simple.
    Nous avons la table suivante :
    ID NB
    1 100
    2 100
    3 50
    4 -250
    5 300
    6 -100


    Je fais un select de toute la table order by id. Je prend les lignes une a une et je fais la somme de la colonne NB au fur et à mesure.
    Une fois que j'atteint 0 je retourne tous les id traités.

    Ainsi mon résultat devra être les id (1,2,3,4) car 100+100+50-250=0


    Il me semble que je n'ai pas d'autre choix que me tourner vers des procédures stockées mais je ne trouve pas comment récupérer le resultat et parcourir les lignes une à une tant que ma condition n'est pas réalisées.

    Merci de votre aide.

  2. #2
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    Tu as un début de requête ??
    Cookie : Anciennement petit gâteau sucré, qu'on acceptait avec plaisir. Aujourd'hui : petit fichier informatique drôlement salé, qu'il faut refuser avec véhémence.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ce genre de traitement est plutôt à effectuer par un langage de programmation que par un moteur de base de données.
    Il te faut extraire toute ta table ordonnée dans un tableau du langage puis avec une boucle du type while faire l'opération et arrêter la boucle quand le résultat tombe à zéro.

    Avec SQL, ça me semble beaucoup plus compliqué.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par CanardJM Voir le message
    Il me semble que je n'ai pas d'autre choix que me tourner vers des procédures stockées mais je ne trouve pas comment récupérer le resultat et parcourir les lignes une à une tant que ma condition n'est pas réalisées.

    Merci de votre aide.
    La particularité des procédures stocké est qu'elles s'exécutent directement sur le serveur, il n'y a donc pas de connexion a faire.

    Le principe est simple :
    1/ tu crée une procédure qui calcule ce dont tu as besoin
    2/ a partir de ton code tu te connecte a ton SGBD
    3/ a partir du ton code et donc après connexion tu appelle ta procédure.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Je pense que je vais suivre l'avis de CinePhil et faire ça en java. J'aurai mon resultset et je pourrais le parcourir et y faire ce que je veux tranquillement.

    J'attendais trop de moi à vouloir faire cela en SQL pur

    Merci.

  6. #6
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par CanardJM Voir le message
    Je pense que je vais suivre l'avis de CinePhil et faire ça en java. J'aurai mon resultset et je pourrais le parcourir et y faire ce que je veux tranquillement.

    J'attendais trop de moi à vouloir faire cela en SQL pur

    Merci.
    Ce n'est plus du SQL pur mais du SQL procédural.
    Pour ton problème je pense que c'est juste un choix personnel et que niveau performance si ta base de donnée est locale, il n'y aura peu d'impact.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

Discussions similaires

  1. Effectuer recherche Multi-critères sur le résultat d'une requête
    Par 30avril1989 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/06/2010, 15h04
  2. Effectuer une opération sur le résultat d'une requête
    Par egg3774 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 13/03/2008, 14h29
  3. Requête sur les résultats d'une requête
    Par kiro57 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/10/2007, 17h48
  4. Réponses: 2
    Dernier message: 30/08/2007, 23h03
  5. [Etat] Basé sur le résultat d'une requête
    Par Pascal26 dans le forum WinDev
    Réponses: 13
    Dernier message: 12/04/2007, 09h04

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