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

C# Discussion :

Query SQL (select) me remonte trop d'enregistrements


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Query SQL (select) me remonte trop d'enregistrements
    Bonjour,

    Une question bête, je fais une requête sql du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCommand.CommandText = "SELECT * FROM requests WHERE ((UserName= @userName) AND (MONTH(Date) = MONTH(CURRENT_DATE())))";
    Date étant un champ de ma table "requests", je ne lui envoie pas d'info en paramètre. Je laisse le moteur Mysql faire le job.

    Si je fais cette requête sur Mysql Workbench, elle me remonte 2 enregistrements car dans le mois en cours (septembre), j'ai bien 2 username d'enregistré.
    Quand je le fais depuis mon code .net, j'ai 4 enregistrements qui me remontent...(dans la table 4 enregistrements sont existants sur le mois de Septembre, mais pour 2 autres UserName).

    Des idées?
    Est-ce que je dois calculer mon mois en cours dans mon code c# plutôt qu'SQL ?

    Merci

  2. #2
    Membre chevronné Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Par défaut
    Bonjour,

    Pour ce que je constate, on dirait que le problème vient du userName et pas du mois en cours.

    dans la table 4 enregistrements sont existants sur le mois de Septembre, mais pour 2 autres UserName
    Regarde la requête générée depuis c# en debug.

    Bon code.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    J'ai la même requête affichée.

    Par contre pour retourner le nombre d'enregistrements, j'utilise Executescalar().
    Ce n'est peut être pas la bonne solution?

    int iResult = Convert.ToInt32(myCommand.ExecuteScalar());

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Trouvé.

    int iResult = int.Parse(myCommand.ExecuteScalar() + "");

  5. #5
    Membre chevronné Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Par défaut
    ExecuteScalar() renvoie la première valeur de la premiere ligne du resultat de ta requête.

    Je pense que ce que tu as besoin c'est ExecuteNonQuery() qui renvoie le nombre de resultats retourné par ta requête.

  6. #6
    Membre chevronné
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Par défaut
    Comme le dit WaterTwelve
    ExecuteScalar() renvoie la première valeur de la première ligne du résultat de ta requête.
    Donc si tes données se présentent sous la forme id|UserName|Date, ce que tu liras, ce sera la valeur de id pour la première ligne retournée.
    Si tu veux seulement compter le nombres d’enregistrements, fais plutôt SELECT COUNT(*) etc..., et la, ExecuteScalar te retournera ce que tu veux.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/08/2013, 17h54
  2. requete sql trop longue enregistrement en mémoire ou sur disque
    Par jyvaut75 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 01/02/2008, 15h11
  3. Enregistrer une requête SQL SELECT sous VB Express
    Par Invité dans le forum VB.NET
    Réponses: 6
    Dernier message: 29/01/2008, 09h04
  4. SQL SERVER 2000 remonter un nombre d'enregistrement
    Par pc152 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 19/10/2006, 14h33
  5. [SQL SERVER] Table contient trop d'enregistrements ?
    Par Tankian dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 10/08/2004, 10h40

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