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 Oracle Discussion :

Probleme count requete sql nombre incorrect


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut Probleme count requete sql nombre incorrect
    Bonjour,

    j'ai un soucis en sql qui met ma patience à rude épreuve : j'ai une simple requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select distinct identifiant
    td1.numdossier as numdossier  ,
    count(t3.rib) as nbrib
    from     table 1 t2
    inner join table2 td1 on.....
    inner join .......
    group by ....
    jusque là je fais tout correctement mais mes résultats sont faux, j'ai par exemple:

    identifiant numdossier nbrib
    123456987 4508 FR11111111111111111111111111 6 faux -> apres vérification j'en ai que 2
    659878780 3698 FR22222222222222222222222222 4 faux -> 1
    666555555 975 FR23333333333333333333333333 3 faux -> 2


    pourtant je suis pas une quiche à ce point, même un count il me met de faux résultats comment ça se fait ?
    si j'enleve le distinct j'ai du genre :
    123456987 4508 FR11111111111111111111111111 6
    123456987 4508 FR11111111111111111111111111 6
    123456987 4508 FR11111111111111111111111111 6
    659878780 3698 FR22222222222222222222222222 4
    659878780 3698 FR22222222222222222222222222 4
    etc....

    un grand merci

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 2013
    Messages : 2 005
    Par défaut
    Est-ce que tu pourrais mettre la requête en entier, ne serait-ce que parce que le Group By influe fortement sur ton résultat.

    Je pense que ce sont tes jointures qui occasionnent des lignes supplémentaires et qui donc faussent le GROUP BY.

    Est-ce que tu peux valider étape par étape ton SELECT? Si oui, fait d'abord un SELECT sans jointure, valide le résultat puis ajoute le GROUP BY, valide puis une première jointure etc etc

  3. #3
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    En gros voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select distinct t2.identifiant as matricule,
    td1.numerodossier as numdossier  ,
    (T1.cpte||T1.guichet||T1.clerib) as rib,
    count(T1.cpte||T1.guichet||T1.clerib) as nbrib
    from     table1 t2                                
    inner join table2 td1 on td1.idrefTable2 = t2.id
    inner join table3 t1 on t1.idrefTable2=t2.id
    group by t2.identifiant ,
    td1.numerodossier ,
    (T1.cpte||T1.guichet||T1.clerib)
     
    ;
    pourtant j'ai tout mis dans le group by

    merci

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 2013
    Messages : 2 005
    Par défaut
    Petite remarque, est-ce que dans les jointures, tu as bien mis TOUS les champs ?
    Si T1 doit se joindre sur T2 via COL1 et COL2, le fait de mettre seulement
    T1 JOIN T2 ON (T1.COL1 = T2.COL1)
    par exemple pourrait générer des lignes parasites qu'on retrouve dans le GROUP BY.

    Si ce n'est pas ça, je sèche...

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Enlève le distinct, le group by, le count et fais un restriction sur ta première ligne fausse


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select *
    from ..
    where t1.identifiant = 123456987
    and td1.numerodossier = 4508 
    AND t1.cpte||t1.guichet||T1.clerib = 'FR11111111111111111111111111'

  6. #6
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Petite remarque, est-ce que dans les jointures, tu as bien mis TOUS les champs ?
    Si T1 doit se joindre sur T2 via COL1 et COL2, le fait de mettre seulement
    T1 JOIN T2 ON (T1.COL1 = T2.COL1)
    par exemple pourrait générer des lignes parasites qu'on retrouve dans le GROUP BY.

    Si ce n'est pas ça, je sèche...
    Bonjour,
    oui j'ai bien mis tous les champs, quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    from table2
    .......
    inner join table3 t1 on t1.idrefTable2=t2.id -- ma jointure ne peut se faire que sur t1.idrefTable2 de la table 1 et  t2.id de la table 2
    :s

  7. #7
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 2013
    Messages : 2 005
    Par défaut
    Et que donne la requête postée par McM?

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

Discussions similaires

  1. Probleme de requete SQL avec la valeur NULL
    Par samyghan dans le forum Installation
    Réponses: 8
    Dernier message: 12/03/2006, 17h24
  2. Probleme de requete SQL
    Par arcane dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 04/10/2005, 11h59
  3. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18
  4. Probleme Session/requete SQL
    Par kolib dans le forum ASP
    Réponses: 4
    Dernier message: 14/06/2005, 16h23
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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