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

Requêtes MySQL Discussion :

Requête MySql n'utilisant pas le "@"


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 66
    Points : 83
    Points
    83
    Par défaut Requête MySql n'utilisant pas le "@"
    Bonsoir à tous. j'utilise MySql comme base de données.
    voici ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT M.mvt_date, COALESCE( R.cr_ref, D.cD_ref ) AS reference, COALESCE( R.cr_motif, D.cD_motif ) AS motif, COALESCE( R.cr_montant, 0 ) AS recette, COALESCE( D.cd_montant, 0 ) AS depense, @cumul := @cumul + COALESCE( R.cr_montant, 0 ) - COALESCE( D.cd_montant, 0 ) AS cumul FROM Mouvement M CROSS JOIN ( SELECT @cumul:=0 ) tmp LEFT JOIN entree E ON M.mvt_id = E.mvt_id LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id LEFT JOIN sortie S ON M.mvt_id = S.mvt_id LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id
    elle s’exécute bien coté base de données mais quand je l’implémente en c# j'obtient cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Parameter '@cumul' must be defined
    .
    Alors je reviens à peine du forum pour développeur c# et ils m'ont proposé de venir ici afin de contourner le problème avec le "@".
    voici au finis le resultat que j'aimerais avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    |recette|depense|Solde|
    |30000|             |30000|
    |        |5000      |25000  |
    |20000|             |45000|
    |5000|              |50000|
    |         |15000    |35000|
    Merci de bien vouloir m'aidé SVP

  2. #2
    Membre confirmé Avatar de Sebwar
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 172
    Points : 498
    Points
    498
    Par défaut
    la requête fonctionne bien coté MySQL donc le problème vient de C#


    retour à l'envoyeur

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Al-faddi.

    Je ne connais pas le C#. Est-ce que le caractère '@' a une signification particulière en C# ?

    Même si la requête fonctionne correctement sous MySql, on peut la présenter différemment.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    set @cumul:=0;
    SELECT M.mvt_date,
           COALESCE( R.cr_ref,     D.cD_ref   ) AS reference,
    	   COALESCE( R.cr_motif,   D.cD_motif ) AS motif,
    	   COALESCE( R.cr_montant, 0          ) AS recette,
    	   COALESCE( D.cd_montant, 0          ) AS depense,
    	   @cumul := @cumul + COALESCE( R.cr_montant, 0 ) - COALESCE( D.cd_montant, 0 ) AS cumul
    	   FROM Mouvement M
    	   LEFT JOIN entree        E  ON M.mvt_id = E.mvt_id
    	   LEFT JOIN carnetrecette R  ON E.cr_id  = R.cr_id
    	   LEFT JOIN sortie        S  ON M.mvt_id = S.mvt_id
    	   LEFT JOIN carnetdepense D  ON S.cd_id  = D.cd_id
    Il se peut que l'analyse de votre requête se fasse dans un ordre particulier qui provoque une erreur.
    Le mieux serait de mettre en premier l'initialisation de @cumul, comme je l'ai fait ci-dessus.

    Sinon, il est difficile de corriger une requête qui n'a pas d'erreur.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 66
    Points : 83
    Points
    83
    Par défaut
    Merci Artemus24.
    Mais j'ai toujours le même problème avec la requête.

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut al-faddi.

    Autre piste.

    Il semble que le caractère '@' soit mal interprété sous C#. As-tu essayé d'utiliser le caractère d'échappement '\' où son équivalent en C# ?

    Quand je désire mettre dans une chaîne de caractères encadré par des apostrophes et que j'ai besoin de mettre dedans des apostrophes, je procède ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = 'c\'est un exemple d\'encadrement par des apostrophes';
    Sans ce caractère d'échappement, il y aura une erreur de syntaxe.

    Maintenant, je suis à court d'idées !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. MySQL n'utilise pas l'index
    Par jeroen dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2012, 14h06
  2. Requête simple n'utilisant pas les index correctement
    Par Sindel dans le forum Requêtes
    Réponses: 9
    Dernier message: 14/07/2010, 13h22
  3. Réponses: 2
    Dernier message: 14/06/2009, 11h12
  4. [MySQL] requête Mysql n'envoie pas le résultat attendu
    Par tvertain dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/11/2008, 16h56
  5. Réponses: 2
    Dernier message: 16/10/2008, 10h08

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