(reprise du message précédent)
Salut ! Oui c'est clairement dit, mais pas clairement compris on va dire. Je vais prendre un stylo, une feuille, et essayer de comprendre car ta requête est diablement efficace..!
En fait j'essaie de lister, dans le même tableau, les sujets consultés, les sujets suivis, et les sujets commentés, d'un membre (pour les besoins de son espace personnel). J'y arrive avec une suite de requêtes, mais ça donne une fois de plus une page extrêmement lourde à charger.
Je suis presque arrivé à une requête unique qui fait ce que je voudrais. Le problème étant le fait que l'intitulé des sujets non commentés n'apparait pas dans le listing.
Voici cette requête :
Je serai de retour en fin d'après-midi. Une fois de plus merci de t'attarder sur mon cas, c'est super sympa. Bonne journée.
PS : Dis, est-ce que ce cours aborde les cas plus évolués que tu appliques ici ? http://sqlpro.developpez.com/cours/sqlaz/jointures/
Il faudrait que je progresse et les sites (genre sdz) n'abordent dans leurs tutos que des cas basiques que je sais faire.
bilhackmac a écrit :
Donc l'astuce de cette petite requête, c'est qu'elle boucle sur elle même avec le 'LEFT JOIN'. Chaque enregistrement est donc lié sur un groupe lui correspondant (dans ce cas là, sur 'sujet'), puis chaque groupe est trié suivant un ordre de grandeur (un id, une date… (dans ce cas la 'idDansSujet')).
Ce processus permet d'obtenir une requête qui retourne beaucoup de résultat, mais seul les derniers (premiers si on inverse le signe de grandeur) résultats par groupe ont un id (ou n'importe quel autre champ) dans la table de bouclage qui vaut NULL.
Ansi avec 'WHERE table_de_bouclage.n_importe_quel_champ IS NULL' ont obtient le dernier enregistrement pour chaque groupe.
J'espère avoir été clair.![]()
Salut ! Oui c'est clairement dit, mais pas clairement compris on va dire. Je vais prendre un stylo, une feuille, et essayer de comprendre car ta requête est diablement efficace..!
bilhackmac a écrit :
Bon je viens d'y jeter un œil, on peut lier les deux tables sur discussion.sujet = discussion_options.sujet_consulte.
Je suppose aussi que com_consulte est en fait l''id' de 'discussion' du dernier message vu pour un sujet pour un utilisateur. (je me trompe ?)
Maintenant la question est : quel résultat veux-tu obtenir ? cligne
En fait j'essaie de lister, dans le même tableau, les sujets consultés, les sujets suivis, et les sujets commentés, d'un membre (pour les besoins de son espace personnel). J'y arrive avec une suite de requêtes, mais ça donne une fois de plus une page extrêmement lourde à charger.
Je suis presque arrivé à une requête unique qui fait ce que je voudrais. Le problème étant le fait que l'intitulé des sujets non commentés n'apparait pas dans le listing.
Voici cette requête :
SELECT *
FROM `discussion_options` DO
LEFT JOIN `discussion` D
ON D.`sujet` = DO.`sujetConsulte`
AND P.`login` = "' . mysql_real_escape_string($statut) . '"
WHERE DO.`login` = "' . mysql_real_escape_string($statut) . '"
GROUP BY DO.`sujetConsulte`');
Je serai de retour en fin d'après-midi. Une fois de plus merci de t'attarder sur mon cas, c'est super sympa. Bonne journée.

PS : Dis, est-ce que ce cours aborde les cas plus évolués que tu appliques ici ? http://sqlpro.developpez.com/cours/sqlaz/jointures/
Il faudrait que je progresse et les sites (genre sdz) n'abordent dans leurs tutos que des cas basiques que je sais faire.