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 :

Requête SQL - système de commentaires


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut Requête SQL - système de commentaires
    Bonjour,

    J'aimerais réaliser un système de commentaire comme sur Couchsurfing.org, c'est-à-dire que deux personnes peuvent écrire chacun sur le profil de l'autre et le système affiche sur chaque profil les commentaires des deux personnes.



    Voici ma table des commentaires:

    - id
    - sender (int)
    - target (int)
    - opinion
    - commentaire
    - date

    Sender et target sont les id des membres qui s'envoient des messages.

    Quand on va sur le profil d'une "target" on affiche tous les commentaires envoyés par les "sender".

    Comment arrangeriez-vous la requête SQL? J'aimerais récupérer les données en une fois.

    Pour l'instant c'est celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = 'SELECT c.opinion,c.commentaire,c.date,user.login 
    	FROM commentaires AS c 
    	LEFT JOIN user ON user.id=c.sender
    	WHERE target=:target 
    	ORDER BY date DESC';

    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Qu'est-ce qui ne va pas avec ta requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut
    Ma requête fonctionne mais elle ne liste que les messages s'adressant au membre X dont on visite le profil.

    Ce que je voudrais c'est que quand le membre X envoie un commentaire sur le profil d'un membre Y, ce commentaire apparaisse également sur le profil de X juste en-dessous du message de Y dès que ce dernier aura commenté à son tour le profil de X.

    C'est un système de confiance. Sur couchsurfing, quand on a été hébergé par un membre du site on dépose un commentaire disant ce qu'on pense de cette personne. Comme ça les autres gens peuvent voir si c'est une personne de confiance. Si je poste des insultes sur le profil d'un autre membre il faut que ce message apparaissent aussi sur mon propre profil. De cette façon les gens voient que je suis une personne grossière et cela incite chacun à être respectueux lors de l'envoi de commentaires.

    J'aimerais implémenter le même principe même si mon projet ne traite pas du même sujet que couchsurfing.org

    Comment modifieriez-vous la requête SQL?

    Merci!

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 158
    Par défaut
    Bonjour,

    Si j'ai bien comprit votre besoin

    la requête suivante peut faire l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select * from(
     
    SELECT c.opinion,c.commentaire,c.date,user.login 
    	FROM commentaires AS c ,user 
    	where user.id=c.sender
    	and target=target 
    union 
    SELECT c.opinion,c.commentaire,c.date,user.login 
    	FROM commentaires AS c ,user 
    	where target=c.sender
    	and target=user
    )
    ORDER BY date DESC

    sachant que user c'est l'utilisateur courant (sur son profil)

    J'espère que ça peut vous aider!

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut
    Merci pour votre aide mar1985 mais en testant votre requête j'obtiens l'erreur suivante:

    #1248 - Every derived table must have its own alias
    J'ai cherché sur Google mais je n'arrive pas à trouver une solution

    Que se passe-t-il?

    Merci

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Le message signifie qu'il faut mettre un alias après la parenthèse fermante dans la requête, par exemple tmp puisque c'est en quelque sorte une table temporaire.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [Système forums] Aide sur une requête SQL
    Par crazy_inf dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/12/2011, 18h27
  3. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  4. [Système] Log des requêtes SQL
    Par eric41 dans le forum Langage
    Réponses: 6
    Dernier message: 13/08/2007, 09h31
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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