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 :

Requete qui retourne une somme supérieure à la somme réelle.


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Par défaut Requete qui retourne une somme supérieure à la somme réelle.
    Bonjour tout le monde,

    C'est mon tout premier message ici, je demande donc un peu d'indulgence si je pose mal ma quetion

    En fait voici ma requete :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = mysql_query("select sum(affichages.nb), sum(clics.nb) 
    from affichages left join clics on clics.idformat = '$idformat' and clics.dest='$_SESSION[ids]' and clics.date like '$date_stats%'
    where affichages.idformat = '$idformat' 
    and affichages.dest='$_SESSION[ids]' 
    and affichages.date like '$date_stats%'");
    Tout fonctionne bien, sauf que les sommes de affichages.nb et clics.nb retournées sont très largement supérieures aux sommes réelles. De quoi cela pourrait venir ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Premières intuitions:
    • il ne te manque pas un GROUP BY quelque part?
    • tu es sûre que ta jointure te retourne les lignes attendues?
    Ce que je ferais pour vérifier que tout fonctionne:
    1) tester la jointure sans les sommes (SELECT * FROM ...) pour voir si le problème ne vient pas de là
    2) voir s'il ne manque pas d'éventuels GROUP BY puis tester la somme

    Le mieux est de tester tes requêtes à part, en dehors de PHP (dans phpMyAdmin ou autre outil de ce genre) pour voir tout ce qu'elles retournent.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Par défaut
    Merci pour ta réponse, mais j'ai déjà essayé tout ca. Je ne comprends vraiment pas !

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    je ne comprends pas trop sur quel critere tu fais ta jointure entre les 2 tables

    peux tu donner un exemple avec qq tuple, le résultat observé, et le résultat attendu

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Par défaut
    En faite j'essaie d'avoir des statistiques d'affichages et de clics. Sachant que la table d'affichages sera toujours plus remplie que celles des clics, je mets la table clics en jointure.... Les deux tables ont des champs identiques. Je veux donc prendre la somme d'affichages et la somme de clics pour l'id du site qui est dans le champ dest, idem pour le format et la date. Mais peut être qu'il manque quelque chose dans ma requete ?

    Je peux tout à fait faire deux select indépendants mais je peux éviter...

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    je crois que tu n'a pas trop compris à quoi servait une jointure
    s'il n'ya pas de relation entre tes tables, les enregistrements vont etre dupliqué

    prenon un exemple de deux tables ayant juste une colone
    table 1 avec les valeurs 1 et 2
    table 2 avec les valeurs 3 et 4
    table 1 join table 2 va te sortir
    - 1 3
    - 1 4
    - 2 3
    - 2 4
    dc tu duplique tes enregistrement si tu n'a pas de critere de jointure

Discussions similaires

  1. Requete qui retourne une date précédée par un même préfixe
    Par Rozgann dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/07/2009, 14h32
  2. [MySQL] requete qui retourne une erreur a l'execution
    Par naazih dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/05/2008, 12h59
  3. Requete SQL qui retourne une erreur
    Par gregal dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/03/2008, 23h05
  4. Réponses: 10
    Dernier message: 13/08/2007, 16h12
  5. Réponses: 10
    Dernier message: 28/07/2007, 15h53

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