none
Requete pour statistique RRS feed

  • Question

  • Bonjour,
    Je solicite votre aide pour realisee une requete qui me parait complexe

    j'ai 4 table 
    1)Campagne
    -------------------
    RefCampagne (int)

    2)U]Rem[/u]
    --------------------
    RefRem (int)
    RefCampagne (int)
    GrDefault (bit)

    3) RemParam
    --------------------
    RemParam (int)
    RefRem (int)
    Evenement (varchar)
    Remuneration (float)

    4) Stat
    ---------------------
    RefStat (int)
    Idaff (int)
    Affichage (int)
    Clic (int)
    DtEvent (DateTime)


    dans la table RemParam j'ai de 2 lignes

    RefParam RefRem Evenement Remuneration
    -----------------------------------------------------
    258 | 35 | 'Affichage' | 0,3
    259 | 35 | 'Clic' | 0,4


    dans la table Stat j'ai 3 lignes

    RefStat Idaff Affichage Clic DtEvent
    -----------------------------------------------------
    332 | 8 | 1 | NULL | 17/08/2009 00:00:00
    333 | 8 | NULL | 1 | 17/08/2009 00:00:00
    334 | 8 | 1 | NULL | 17/08/2009 00:00:00
    335 | 8 | 1 | NULL | 18/08/2009 00:00:00
    336 | 8 | NULL | 1 | 18/08/2009 00:00:00

    J'aimerai faire un requete qui me donnerai le resultat suvant mais j'ai du mal

    Datevent | Idaff | NbrAffichage | GainAffichage | NbrClic | GainClic
    -------------------------------------------------------------------------
    17/08/2009 | 8 | 2 | 0,6 | 1 | 0,8
    18/08/2009 | 8 | 1 | 0,3 | 1 | 0,4

    Merci
    jeudi 20 août 2009 15:20

Toutes les réponses

  • Bonjour,

    Je vais pas discuter la partie conceptualisation, parceque il y a beaucoup de choses à améliorer (à commencer déjà par le nom des tables et des champs)...
    Bref, pour réussir ta requête, il faut ajouter une clé étrangère (RemParam ) dans la table Stat, afin de savoir le taux de rémunération,
    ainsi que le type de campagne.

    Merci.
    jeudi 20 août 2009 19:33
  • Merci de ta reponse mais en fait c'est un peu plus complexe que ca 
    dans mon 1er message j'ai essayé de simplifier 
    mais j'aurai du rentrer un peu plus dans le detail

    stat doit etre liée à la table campagne 
    campagne liée à rem
    Rem liée à RemParam

    STAT:IdAnn -------------RefUser:CAMPAGNE
    CAMPAGNE:Refcampagne-------------Refcampagner:REM
    REM:REFREM-------------REFREM:RemParam

    en il y a l'annonceur(Idann) et le l'affilie(Idaff)

    Au depart l'annonceur crée une campagne(campagne), un ou des groupe de rémunération(REM) dont 1 qui sera par defaut, dans ces groupes il crée des rémunération
    l'affilié passe des bannieres sur sur site quand la banniere s'affiche ou un clic se produit, une ligne s'ajoute dans la table stat en donnant Idann Idaff et evenement (clic ou affichage)

    le but de la requete et d'afficher les stat de affilie par jour ou autre(semaine,mois etc..) pour l'affilié et pareil pour l'annonceur

    J'ai reussi ma requete mais elle ne fonctionne que sur 1 jour
    ca te permettra peut etre de comprendre car c complique d'expliquer par ecrit 


    select dtdate,

    (SELECT COUNT(Stat.A) AS A 
    FROM CampagneRemuneration 
    INNER JOIN CampagneRemunerationParam ON CampagneRemuneration.RefRem = CampagneRemunerationParam.RefRem 
    INNER JOIN Campagne ON CampagneRemuneration.RefCampagne = Campagne.RefCampagne 
    RIGHT OUTER JOIN Stat ON Campagne.RefUser = Stat.IdAnn 
    WHERE (Stat.IdAff = 8) 
    AND (Stat.DtDate BETWEEN '17/08/2009' AND '17/08/2009') 
    AND (CampagneRemuneration.GrDefault = 1) 
    and Stat.A=1 
    and CampagneRemunerationParam.Evenement ='Affichage' 
    GROUP BY Stat.DtDate, CampagneRemunerationParam.Evenement, Campagne.Titre) as nbrAff,

    (SELECT SUM(CampagneRemunerationParam.Rem) AS Expr1 
    FROM CampagneRemuneration 
    INNER JOIN CampagneRemunerationParam ON CampagneRemuneration.RefRem = CampagneRemunerationParam.RefRem 
    INNER JOIN Campagne ON CampagneRemuneration.RefCampagne = Campagne.RefCampagne 
    RIGHT OUTER JOIN Stat ON Campagne.RefUser = Stat.IdAnn 
    WHERE (Stat.IdAff = 8) 
    AND (Stat.DtDate BETWEEN '17/08/2009' AND '17/08/2009') 
    AND (CampagneRemuneration.GrDefault = 1) 
    AND (Stat.A = 1) 
    AND (CampagneRemunerationParam.Evenement = 'Affichage') 
    GROUP BY Stat.DtDate, CampagneRemunerationParam.Evenement, Campagne.Titre)as aff,

    (SELECT COUNT(Stat.c) AS c 
    FROM CampagneRemuneration 
    INNER JOIN CampagneRemunerationParam ON CampagneRemuneration.RefRem = CampagneRemunerationParam.RefRem 
    INNER JOIN Campagne ON CampagneRemuneration.RefCampagne = Campagne.RefCampagne 
    RIGHT OUTER JOIN Stat ON Campagne.RefUser = Stat.IdAnn 
    WHERE (Stat.IdAff = 8) 
    AND (Stat.DtDate BETWEEN '17/08/2009' AND '17/08/2009') 
    AND (CampagneRemuneration.GrDefault = 1) 
    And Stat.c=1 
    And CampagneRemunerationParam.Evenement ='Clic' 
    GROUP BY Stat.DtDate, CampagneRemunerationParam.Evenement, Campagne.Titre) as nbrClic,

    (SELECT sum(CampagneRemunerationParam.Rem) AS Expr1 
    FROM CampagneRemuneration 
    INNER JOIN CampagneRemunerationParam ON CampagneRemuneration.RefRem = CampagneRemunerationParam.RefRem 
    INNER JOIN Campagne ON CampagneRemuneration.RefCampagne = Campagne.RefCampagne 
    RIGHT OUTER JOIN Stat ON Campagne.RefUser = Stat.IdAnn 
    WHERE (Stat.IdAff = 8) 
    AND (Stat.DtDate BETWEEN '17/08/2009' AND '17/08/2009') 
    AND (CampagneRemuneration.GrDefault = 1) 
    And Stat.c=1 
    And CampagneRemunerationParam.Evenement ='Clic' 
    GROUP BY Stat.DtDate, CampagneRemunerationParam.Evenement, Campagne.Titre) as clic 

    from stat where dtdate='17/08/2009'
    group by dtdate

    je pense que ta methode doit etre la bonne mais j'ai vraiment du mal

    merci
    jeudi 20 août 2009 20:27