Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupération de données

meilleure option ?

Sujet résolu
    14 septembre 2020 à 18:47:06

    Bonjour, 


    Je suis sur un projet Symfony dans lequel je dois récupérer des données utilisateurs sur Instagram pour mesurer leur activité.


    Ma BDD se compose de 4 tables :Instamgrameur/Post/Follower/Following.


    Les tables Followers/Following se compose uniquement de leur id, le compteur(nombre de personnes) et la date de maj du compteur.


    La table Post se compose de l’id, l’auteur, et la date du post de chaque instamgrameur.


    A savoir que la date de mise à jour est définie par un scraper qui récupère et insère ces données en BDD.


    Je voudrais afficher dans un seul et même tableau le nombre de posts, de followers et following par instamgrameur à la dernière date de mise à jour par ligne.


    Quelle serait la meilleure méthode pour récupérer l’ensemble de ces données dans ces différentes tables et arriver à les afficher dans le tableau.


    J’imaginais 2 solutions:

    • une jointure sur toutes les tables pour en récupérer chaque donnée.

    • ou une requête par info mais en termes de performance ca doit pas être optimisé sans compter l’affichage de différentes requêtes dans la même ligne d’un tableau avec Twig.


    Concernant la requête j’ai du mal à voir la structure.


    Auriez vous une idée pour m’aiguiller svp ?


    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2020 à 22:11:01

      Bonjour.
      Peut être :
      SELECT * FROM instagrammer, post, follower, following WHERE post.id=instagrammer.id, follower.id=instagramer.id, follower.id=instagramer.id, following.id=instagramer.id

      -
      Edité par -Crixus- 14 septembre 2020 à 22:12:37

      • Partager sur Facebook
      • Partager sur Twitter

      "Etre vrai, peu le peuvent."
      Friedrich Nietzsche

        14 septembre 2020 à 22:29:53

        Adrien Supra a écrit:

        Bonjour.
        Peut être :
        SELECT * FROM instagrammer, post, follower, following WHERE post.id=instagrammer.id, follower.id=instagramer.id, follower.id=instagramer.id, following.id=instagramer.id

        -
        Edité par Adrien Supra il y a 5 minutes


        On va éviter les "jointures" avec des tables dans la table from et des where, il y a l'instruction JOIN pour ça

        Il y a pas forcément toute les infos mais si la date d'update dans les tables followers et following correspondent à la date dans post et aussi que l'auteur corrspond à l'id dans instamgrameur alors il faudrait faire une jointure dessus mais ça aurai été mieux avec des id qui sont lié entre les tables

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2020 à 22:47:34

          quenti77 a écrit:

          On va éviter les "jointures" avec des tables dans la table from et des where, il y a l'instruction JOIN pour ça


          Genre... tout le monde fait ca non ? En tout cas moi sa fait des mois que j'ai pas fait une jointure interner avec ON, mes script tourne bien.
          • Partager sur Facebook
          • Partager sur Twitter

          "Etre vrai, peu le peuvent."
          Friedrich Nietzsche

            15 septembre 2020 à 12:33:08

            Bonjour,

            Il faut bien sûr éviter de mettre une requête dans une boucle, en terme de performance c'est moyen ...

            Peux-tu nous préciser la structure exacte de tes tables : colonnes, types et clés ?

            Peux-tu nous donner un exemple de résultat attendu ?

            quenti77 a écrit:

            On va éviter les "jointures" avec des tables dans la table from et des where, il y a l'instruction JOIN pour ça

            Adrien Supra a écrit:

            moi sa fait des mois que j'ai pas fait une jointure interne avec ON, mes script tourne bien.

            Les deux syntaxes sont correctes et fonctionnelles, il n'y a aucune différence en terme de performance entre les deux. On va juste dire que c'est un peu "obsolète" d'écrire les jointures dans la clause WHERE ...

            Pour la petite histoire, depuis la mise en place des jointures explicites avec le mot clé JOIN, en 1992 (SQL 2), il est conseillé d'utiliser cette syntaxe pour clairement distinguer ce qui tient des jointures et ce qui tient des conditions de filtrage que l'on laisse à la clause WHERE, c'est une question de sémantique, cela donne une bien meilleure lisibilité à la requête.

            Déplacement vers un forum plus approprié

            Le sujet est déplacé de la section PHP vers la section Base de données

            -
            Edité par Benzouye 15 septembre 2020 à 12:33:42

            • Partager sur Facebook
            • Partager sur Twitter
            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
              17 septembre 2020 à 17:04:28

              Merci à tous pour vos réponses, j'ai modifié la conception de la BDD cela dit la réponse d'Adrien était bonne dans mon cas .

              Merci encore

              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2020 à 17:44:19

                Franchement, il faut vous marier tous les deux :D

                Vous avez réussi à vous comprendre l'un l'autre ! C'est extraordinaire ici !

                Perso, moi je n'ai toujours rien compris à ton problème ...

                -
                Edité par Benzouye 17 septembre 2020 à 17:44:41

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                  17 septembre 2020 à 18:24:36

                  Si ça réponse est bonne, en vrai fait la même chose mais avec un inner join :D
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Récupération de données

                  × 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