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

Langage SQL Discussion :

group by et résultat incohérent


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 28
    Points : 13
    Points
    13
    Par défaut group by et résultat incohérent
    Salut à tous !

    Je bosse sur une requête pas très compliquée que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT DISTINCT(page_title),max(old_id) as id,old_text
    FROM text,revision,page
    WHERE text.old_id = revision.rev_text_id
    AND revision.rev_page = page.page_id
    AND page.page_is_redirect = '0'
    AND (text.old_text LIKE '%test%' OR page_title LIKE '%test%')
    GROUP BY page_title,old_id;
    Elle est censée me renvoyer la dernière version de chaque texte de la table text, contenu dans une page. Je dois passer par une table revision pour faire une jointure entre elles.

    Je récupère donc l'id le plus élevé, ce qui correspond à la version la plus récente, le titre de la page contenant mon texte (à l'arrivée je dois remonter autant de textes que de pages différentes) et le texte qui correspond à l'id le plus élevé.
    Puis je groupe par page. Le nombre de résultat est correct, les id max aussi, mais le texte récupéré n'est pas celui de la ligne de l'id max

    J'en viens donc à me dire que la clause group by fait un peu ce qu'elle veut, mais ça résout pas mon problème.

    Quelqu'un peut m'aider ?
    Merci !

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    Au cas où quelqu'un remette le nez ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT page_id, max(old_id),old_text, page_title
    FROM text t,revision r,page p
    WHERE t.old_id = r.rev_text_id
    AND r.rev_page = p.page_id
    AND (t.old_text LIKE '%Bon%' OR p.page_title LIKE '%Bon%')
    AND old_id = (
                SELECT max(old_id)
                FROM text t2,revision r2,page p2
                WHERE t2.old_id = r2.rev_text_id
                AND r2.rev_page = p2.page_id
                AND (t2.old_text LIKE '%Bon%' OR p2.page_title LIKE '%Bon%')
                AND p2.page_title = p.page_title
                  )
    AND p.page_is_redirect = '0'
    GROUP BY old_text,page_id
    HAVING max(old_id);

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

Discussions similaires

  1. [A-03] Résultat incohérent après suppression d’enregistrement
    Par salkama dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/10/2008, 15h53
  2. Résultat incohérent de la fonction strlen()
    Par kaayna dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2008, 17h35
  3. Réponses: 3
    Dernier message: 25/03/2008, 03h00
  4. Résultat incohérent en utilisant NLS_DATE_LANGUAGE
    Par Liberte Outremer dans le forum SQL
    Réponses: 2
    Dernier message: 25/06/2007, 17h16
  5. Résultat incohérent de pow, sqrt
    Par PierrotY dans le forum C++
    Réponses: 15
    Dernier message: 16/03/2005, 12h07

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