Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide a la creation de requete complexe (ou pas)

Sujet résolu
    21 juillet 2011 à 15:13:00

    Bonjour a tous,

    J'essaye actuellement de creer une requete reccuperant des donnees sur trois tables differentes.

    En voici leur description simplifie:

    TABLE user:
     
    id - int
    name - varchar
     
    -------------------
     
    TABLE link
     
    id_user - int
    id_tab3 - int
     
    -------------------
     
    TABLE tab3
     
    id - int
    begin_date - datetime


    J'ai deja essaye plusieurs choses, dans ce style:
    SELECT COUNT(t.id), u.name FROM table3 AS t, liaison AS l, user AS u WHERE TO_DAYS(NOW()) - TO_DAYS(t.begin_date) <= 100 AND t.id = l.table3_id LIMIT 10
    

    mais sans succes.

    Le but etant de reccuperer 10 users, en les classant par le nombre d'elements postes dans tab3 de la derniere semaine (la table link servant a savoir quel element poste correspond a quel user, me demandez pas pourquoi on a pas insere ca direct dans tab3, j'en sais rien et c'est pas amene a changer).

    Merci d'avance, et desole pour les fautes / manque d'accent.
    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
      21 juillet 2011 à 15:28:02

      Déja tu as une requête sous la forme
      SELECT COUNT(t.id), u.name ...
      


      mais comme tu as un u.name il te manque un GROUP BY u.name dans la requête.
      • Partager sur Facebook
      • Partager sur Twitter
        21 juillet 2011 à 16:00:33

        Pour l'instant, j'en suis a ca:

        SELECT up.users_id, count( * ) AS total
        FROM sf_users_products AS up, sf_guard_user AS u
        WHERE up.users_id
        IN (
        
        SELECT up.users_id
        FROM sf_users_products AS up, sf_products AS p
        WHERE up.products_id = p.id
        AND to_days( NOW( ) ) - to_days( p.begin_date ) <= 7
        )
        GROUP BY up.users_id
        ORDER BY total DESC
        LIMIT 0 , 30
        

        Je pense etre sur la bonne voix, mais c'est pas encore tout a fait ca ( comprendre sf_users_products pour la table precedement nomme link, sf_products pour la table precedement nommee tab3 )


        EDIT: j'ai reussi, merci. Ci ca peut en aider d'autre:

        SELECT u.first_name, count(p.id) AS total
        FROM sf_users_products AS up, sf_guard_user AS u, sf_products AS p
        WHERE to_days( NOW( ) ) - to_days( p.begin_date ) <= 7 AND p.id = up.products_id AND up.users_id = u.id
        GROUP BY u.id
        ORDER BY total
        LIMIT 6
        
        • Partager sur Facebook
        • Partager sur Twitter

        Aide a la creation de requete complexe (ou pas)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown