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

VBA Access Discussion :

Connaître les produits fréquemment utilisés ensemble


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Connaître les produits fréquemment utilisés ensemble
    Bonjour,

    Je planche actuellement sur le sujet suivant :

    Lorsque les gens font leurs courses, ils achètent souvent des produits liés :
    exemple : lorsqu'une personne achète une tasse à café, elle achète aussi une cuillère et une sous-tasse.

    Je cherche, sous Access, à retrouver ces produit liés.
    je dispose d'une table qui comporte le numéro d'une commande et le produit acheté dans cette commande.

    exemple :
    n° de la commande; Produits
    1 ; A
    1 ; B
    2 ; A
    2 ; B
    2 ; D
    2 ; E
    3 ; A
    3 ; B
    3 ; C
    3 ; D

    Je cherche donc à savoir combien de fois les produits :
    • A&B sont commandés
    • A&C sont commandés
    • A&D sont commandés
    • etc.


    J'ai essayé de faire une tableau croisé dynamique sous access, avec en ligne les Produits, en colonne les Produits (dupliqués) et en zone de données le nombre de commande.
    Le seul résultat que j'obtiens est (pour reprendre l'exemple) que A&A est commandé 3 fois. Le tableau ne croise pas les données sur toute la matrice...

    Pourriez-vous me donner des pistes pour aboutir ?

    merci d'avance

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour et bienvenu sur le forum,

    Voici un petit exemple avec une table Table1.
    Table1 (NumCmde, Produit)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T1.Produit, T2.Produit, Sum(1) AS Ligne
    FROM Table1 AS T1 INNER JOIN Table1 AS T2 ON T1.NumCmde = T2.NumCmde
    WHERE (T2.Produit>T1.Produit)
    GROUP BY T1.Produit, T2.Produit;
    Le principe est qu'on fait une requête de la table Table1 sur elle-même en faisant une jointure sur le numéro de commande.
    Pour éviter de reporter deux fois une même association (A-C versus C-A) je mets en critère T2.Produit>T1.Produit

    Avec ton exemple, voici le résultat de la jointure (T1-T2)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    T1	T2	Ligne
    A	A	éliminé par clause WHERE
    A	B	1
    B	A	éliminé par clause WHERE
    B	B	éliminé par clause WHERE
     
    A	A	éliminé par clause WHERE
    A	B	1
    A	D	1
    A	E	1
    B	A	éliminé par clause WHERE
    B	B	éliminé par clause WHERE
    B	D	1
    B	E	1
    D	A	éliminé par clause WHERE
    D	B	éliminé par clause WHERE
    D	D	éliminé par clause WHERE
    D	E	1
    E	A	éliminé par clause WHERE
    E	B	éliminé par clause WHERE
    E	D	éliminé par clause WHERE
    E	E	éliminé par clause WHERE
     
    A	A	éliminé par clause WHERE
    A	B	1
    A	C	1
    A	D	1
    B	A	éliminé par clause WHERE
    B	B	éliminé par clause WHERE
    B	C	1
    B	D	1
    C	A	éliminé par clause WHERE
    C	B	éliminé par clause WHERE
    C	C	éliminé par clause WHERE
    C	D	1
    D	A	éliminé par clause WHERE
    D	B	éliminé par clause WHERE
    D	C	éliminé par clause WHERE
    D	D	éliminé par clause WHERE
    Enregistrements retenus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    T1	T2	Ligne
    A	B	1
    A	B	1
    A	D	1
    A	E	1
    B	D	1
    B	E	1
    D	E	1
    A	B	1
    A	C	1
    A	D	1
    B	C	1
    B	D	1
    C	D	1
    ce qui après regroupement donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    T1	T2	Ligne
    A	B	3
    A	C	1
    A	D	2
    A	E	1
    B	C	1
    B	D	2
    B	E	1
    C	D	1
    D	E	1
    A+

Discussions similaires

  1. Connaître les paramètres proxy utilisés
    Par hoRa dans le forum Windows XP
    Réponses: 0
    Dernier message: 08/02/2008, 10h51
  2. Réponses: 1
    Dernier message: 11/12/2007, 17h34
  3. Réponses: 4
    Dernier message: 03/02/2005, 14h16
  4. Connaître les differentes bases présentes
    Par Drahu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2004, 13h31
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

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