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 :

SQL JOIN GROUP BY : le melange ne colle pas


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut SQL JOIN GROUP BY : le melange ne colle pas
    hello
    soit une table "table1 " avec entre autre les champs :
    - id_news auto increment
    - titre_news
    - texte_news

    pour chaque ligne table1 je peux mettre aucun , UN ou plusieurs commentaires qui sont stocké dans table2 fait comme ceci
    - id_reactions
    -texte_reactions

    le "id_reactions" de la table2 a donc obligatoirement une valeur de "id_news" de la table1.
    bref, un truc tout cucul

    Comment faire, via une JOINTURE me semble t-il (?) , le regroupement des 2 tables ... en ayant une nouvelle colonne nbre_reactions , qui me donne le Nombre de commentaires rattachés à une news de la table1 ?
    exemple
    id_news | titre_news | texte_news | id_reactions | nbre_reactions
    1 | titre1 | text1 | 1 | 12
    6 | titre6 | text6 | 6 | 17


    dans cet exemple , la news 1 a eu 12 commentaires , ce qui fait que j'ai 12 lignes dans la table2 qui ont id_reactions qui sont egales à 1

    j'ai fait un truc du genre qui ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM table1
    LEFT JOIN
    (SELECT * , count(id_reactions) AS nbre_reactions FROM table2 GROUP BY id_reactions ) AS table3
    ON table1.id_news=table3.id_reactions
    WHERE ma_condition
    je pensais créer un table3 qui aurait toutes les colonnes de la table2 PLUS une nouvelle issue d'un GROUP BY , mais ca veut pas
    un coup de pouce serait bienvenu !

    merci

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Par défaut
    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT titre_news, text_news, COUNT(id_news) 
    FROM table1, table2
    WHERE id_news=id_reaction
    GROUP BY id_news
    Jsuis pas sur de mon coup .....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut
    merci irongone ... mais cela ne colle pas.

    En fait , il me faut trouver la combine pour créer à la volée une table3 ( dérivée de la table 2) qui contiennent 3 champs : id_reactions, text_reactions et nbre_reactions.

    nbre_reactions est le décompte du nombre id_reactions de la table2.

    Cette table3 est passée en argument de la requête "LEFT JOIN table3 ON..."

    mais as t-on le droit ?

  4. #4
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Avec la requette suivante tu obtiendras pour chaque news les commentaires ainsi que le nombre ce qui ne correspond pas à 100% à ton exigence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT t1.*, t2.texte_reaction, t3.nb
    FROM tb_news t1, tb_com t2, 
    	(SELECT t11.id_news, count(*) as nb from tb_news t11, tb_com t12
    	 WHERE t11.id_news = t12.id_reaction
    	 GROUP BY t11.id_news) t3
    WHERE t1.id_news = t2.id_reaction
    AND t1.id_news = t3.id_news
    Dans ta demande je ne comprends pas trop ce que tu attends dans la colonne id_reactions (est-ce la liste complète des id_reactions) ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    Dans ta demande je ne comprends pas trop ce que tu attends dans la colonne id_reactions (est-ce la liste complète des id_reactions) ?
    en fait:

    j'ai une table1 avec des nouvelles
    Pour chaque nouvelles, les utilisateurs peuvent poster ou non des commentaires ...qui sont stockés dans la table2
    Le lien entre les 2 tables est le n° Id des nouvelles de la table1.

    ainsi la table2 peut avoir des X tuples avec comme id_reactions la valeur 4 ... parce que j'ai recu X reactions pour la nouvelle numero 4

    mon but est de ressortir le listing des nouvelles avec entre [] le nombres de reactions.

    est-ce plus clair ?

  6. #6
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Cette requette devrait suffir alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT t1.*, count(*)
    FROM tb_news t1, tb_com t2, 
    WHERE t1.id_news = t2.id_reaction
    GROUP BY t1.id_news

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

Discussions similaires

  1. Sql Access : Group By
    Par rstephane dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 01/06/2006, 10h34
  2. Création d'une vue sous SQL Server - group by complexe
    Par csembeil dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/01/2006, 16h17
  3. [sql 9i] group by par années ;)
    Par booth dans le forum Oracle
    Réponses: 7
    Dernier message: 04/10/2005, 10h42
  4. Mon contrôle ne se "colle" pas dans mon groupe d'o
    Par saucisson dans le forum Access
    Réponses: 4
    Dernier message: 16/09/2005, 18h08
  5. [SQL] Jointure,Group BY et ORDER BY COUNT qui marche pas
    Par Stef784ever dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/08/2005, 12h28

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