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

Langage SQL Discussion :

page comme Twiiter ou Facebook


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut page comme Twiiter ou Facebook
    Bonjour, je voudrais votre avis sur une requête sql qui est présentée ci dessous.

    Le but, étant de créer une page comme twiiter où les membres peuvent suivre l'actualité d'autre membres.
    Voici un exemple de la bas de données (mysql) pour mieux comprendre la question :

    table membres :
    id, membres, etc...
    table follow :
    id, id-du-membre, id-de-la-personne-qu'il-follow
    Publication-membre :
    id, id-membre, text, date, etc..

    Quand on va sur la page membres.monsite.com/le-membre, j'envoie deux requêtes sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `id-de-la-personne-qu'il-follow` FROM `follow` WHERE  `membre` = 'son-id';
    Puis l'on récupère toutes les id des personnes qu'il follow. Puis j'envoie une nouvelle requête comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT `id`, `text`, `date`, membre.id, membre,pseudo FROM `publication` 
    LEFT JOIN `membre` (publication.membreid = membre.id)
    WHERE  `id-membre` = 'son-id' OR `id-membre` = 'id2' OR `id-membre` = 'id3' OR `id-membre` = 'etc.'
    ORDER BY `date` DESC LIMIT 20;
    Si la personne suit 500 personnes ça ne risque pas d'être trop lourd ? On ne peut pas alléger la requête avec un LEFT JOIN ou INNER JOIN ? Je ne suis pas un pro en ce qui concerne les bases de données (j'utilise mysql).

    Ou vaut il mieux de limiter le nombre de follow à 100, pour ne pas avoir un where trop grand ?

    ps : j'utilise un système de mise en cache qui va quand même grandement alléger le tout, mais je souhaite limiter au maximum la lourdeur de la requête car ce sera la plus gourmande du site !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Je n'arrive pas saisir l'utilité des "OR" dans votre 2eme requête ?


    A quoi correspondent ces id2, id3 ..?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    id, id2, id3 etc.. correspond aux id récupérés dans la première requête SQL (la liste des membres qu'il follow).

    Je crois avoir trouvé la solution mais je ne suis pas certain. Tout simplement ajoute une date de dernière modification à la table publication, puis de sortir les données avec un LIMIT 20 par exemple.

    J'ai modifié les requêtes de mon post, j'avais oublié d'ajouter une table sans elle ce n'est pas trop compréhensible.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    oki,

    vous pouvez largement alléger la construction de cette requête :

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select c.id, c.text, c.date, a.id, a.pseudo 
    from follow b 
    inner join Publication-membre c on b.id-de-la-personne-quil-follow = c.id-membre
    inner join membre a on b.id-de-la-personne-quil-follow = a.id
    where b.id-du-membre= 'son-id'
    order by c.date DESC 
    LIMIT 20;

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    Je vous remercie de votre réponse. Elle me semble être nickel. J'espère que ce ne sera pas trop lourd, mais ca à l'air bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] Comment coder une page comme celle ci
    Par Downey JR- dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/05/2008, 14h17
  2. page comme menu fixe
    Par tenderstoune dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 10/07/2007, 09h05
  3. [PHP-JS] rafraîchir une page comme ça
    Par Lyna31 dans le forum Langage
    Réponses: 11
    Dernier message: 07/03/2007, 17h08
  4. Comment recharger une page comme si on fausiat un refresh
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/12/2005, 22h15
  5. Ouvrir plusieurs pages comme homesite ou dreamweaver
    Par tipiweb dans le forum Composants VCL
    Réponses: 8
    Dernier message: 27/10/2005, 22h25

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