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

SQL Procédural MySQL Discussion :

Utilisation de variables SQL dans une requête


Sujet :

SQL Procédural MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Utilisation de variables SQL dans une requête
    Bonjour à tous,

    J'ai une requête SQL faisant appel à une variable que je n'arrive pas à exécuter...
    Malgré avoir lu la doc MySQL et pas mal planché sur le sujet je n'arrive toujours pas à saisir où se situe le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SUM(l.MkVal) AS sumVal 
    FROM ligne_attrib_titre l 
    WHERE l.id_titre = '5902941';
     
    SET @sumValue := sumVal;
    SELECT (SELECT @sumValue)/3.0;
    La première ligne donne bien le résultat attendu.
    Néanmoins, à l'exécution de la deuxième ligne, l'erreur levée par l'outil MySQL Query Browser est la suivante:
    Unknown column 'sumVal' in 'field list'

    Merci pour votre coup de main!

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 037
    Points : 23 784
    Points
    23 784
    Par défaut
    Bonjour,

    L'assignation se fait dans le SELECT, pas après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT @sumValue:=SUM(l.MkVal) AS sumVal 
    FROM ligne_attrib_titre l 
    WHERE l.id_titre = '5902941';
    ced

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ced Voir le message
    Bonjour,

    L'assignation se fait dans le SELECT, pas après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT @sumValue:=SUM(l.MkVal) AS sumVal 
    FROM ligne_attrib_titre l 
    WHERE l.id_titre = '5902941';
    ced
    Merci pour votre rapide réponse, j'obtiens effectivement un résultat:
    1342319140.3404 pour être exact.

    Simplement la ligne suivante ne marche pas du coup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (SELECT @sumValue)/3.0;
    Car cela me retourne un résultat "null".

    (de même pour: SELECT @sumValue/3.0; )

    Merci encore pour votre aide.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 037
    Points : 23 784
    Points
    23 784
    Par défaut
    Un seul SELECT suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT @sumValue / 3.0;
    Bien sûr, il faut supprimer la ligne intermédiaire dans ta première série de requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @sumValue := sumVal;
    ced

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui, j'ai naturellement supprimé la deuxième ligne et la requète est comme cela actuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT @sumValue:=SUM(l.MkVal) AS sumVal 
    FROM ligne_attrib_titre l 
    WHERE l.id_titre = '5902941';
     
    SELECT @sumValue/3.0;
    Et toujours le résultat null retourné à l'exécution de la deuxième ligne (et ce malgré un résultat numérique retourné par la première).

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 037
    Points : 23 784
    Points
    23 784
    Par défaut
    Avec quoi exécutes-tu ce code ? Dans un client MySQL ? Dans une commande PHP ?

    ced

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Comme je l'ai précisé dans mon premier message, j'exécute ces requêtes avec l'outil MySQL Query Browser. (Afin de tester)
    Le but à terme est de les exécuter grâce à l'API Java.

  8. #8
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 037
    Points : 23 784
    Points
    23 784
    Par défaut
    Ooops, autant pour moi, je n'ai pas relu le premier post...
    Bon, ben ça vient de là... De MySQL Query Browser. J'ai déjà constaté l'impossibilité de lancer simultanément plusieurs commandes se terminant par un ; dans MySQL Query Browser. Tout se passe comme si l'exécution des 2 commandes se faisait dans 2 "sessions" différentes. Et du coup, tu perds entre temps ta variable, d'où le NULL...

    ced

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette réponse!
    Je commençais effectivement à m'en douter

    Du coup pas moyen de tester sans programmer?

  10. #10
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 037
    Points : 23 784
    Points
    23 784
    Par défaut
    Si, dans une console MySQL (c'est d'ailleurs comme ça que je l'ai testé ).

    ced

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

Discussions similaires

  1. Utiliser une variable PL/SQL dans une requête
    Par maxwell86 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 10/12/2008, 09h34
  2. [SQL] insérer des variables php dans une requête sql
    Par lili38 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 22/06/2007, 16h38
  3. Utilisation de variable Builder dans une requete SQL
    Par _ben_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/06/2007, 11h36
  4. [SQL] Comment insérer une variable php dans une requête SQL ?
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/05/2007, 08h47
  5. Appeler une variable VB dans une requête SQL
    Par Chopper dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/09/2006, 14h27

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