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 :

Nombre de lignes en commun dans une table


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Nombre de lignes en commun dans une table
    Bonjour à tous,

    Je sollicite votre aide car je ne trouve pas la solution idoine à mon problème.
    Voici "l'énoncé" :

    J'ai une table "group_publication" contenant :
    - id (int auto increment)
    - group_id (int)
    - publication_id (int)

    Une publication peut etre rattachée à plusieurs groupes (plusieurs groupes ont travaillé sur la meme publication).

    J'ai réussi, pour un groupe donné, à avoir la liste des autres groupes avec qui il à travaillé.

    Mais je souhaiterais savoir quels sont ceux avec qui il a le + travaillé (ceux avec le + de lignes en commum quoi).

    Voilà ma requete me permettant d'avoir ceux avec qui il à travaillé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT distinct(group_id) FROM group_publication
    WHERE group_id <> %d 
    AND group_id IN (
    	SELECT distinct group_id 
    	FROM group_publication
    	WHERE publication_id IN (
    		SELECT publication_id  FROM group_publication WHERE group_id = %d
    	)										
    )
    Merci à tous ceux qui pourront m'aider à avancer

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Pour votre premier besoin, essayez cette requête, peut-être plus optimisée si elle est juste (pas testée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT distinct(group_id) FROM group_publication
    WHERE group_id <> %d 
    AND group_id IN (
    	SELECT distinct group_id 
    	FROM group_publication
    	WHERE publication_id IN (
    		SELECT publication_id  FROM group_publication WHERE group_id = %d
    	)										
    )
    Et à partir de cette première requête, la requête suivante devrait répondre à votre second besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT g1.group_id, COUNT(*) As nb
    FROM group_publication g1
    WHERE EXISTS
    (
    	SELECT *
    	FROM group_publication g2
    	WHERE g2.publication_id = g1.publication_id
    		AND g2.group_id <> g1.group_id
    		AND g2.group_id = %d
    )
    GROUP BY g1.group_id
    ORDER BY g1.group_id DESC
    LIMIT 1

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    vous pouvez aussi essayer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT gp2.group_id, COUNT(*) as NbCommun
    FROM group_publication gp1
    INNER JOIN group_publication gp2
        ON pg2.publication_id = gp1.publication_id
    WHERE gp1.group_id = %d
        AND gp2.group_id <> %d
    GROUP BY gp2.group_id

Discussions similaires

  1. [OpenOffice][Texte] Lignes trop longues dans une table des matières
    Par Gaillac dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 15/08/2011, 12h10
  2. [XL-2003] calcule le nombre de ligne non vide dans une colonne donnée
    Par aefmaaradji dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2010, 15h08
  3. Récupérer des lignes non enregistrées dans une table
    Par leddy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/04/2008, 15h09
  4. nombre de valeurs non nulles dans une tables
    Par 080983 dans le forum SQL
    Réponses: 33
    Dernier message: 27/08/2007, 12h04
  5. selectionner une ligne au hasard dans une table
    Par dark_vidor dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/06/2005, 12h01

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