[SQL] Requette un peu spécial

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [SQL] Requette un peu spécial

par zeus » 08 juil. 2005, 08:51

Non,non tu as déjà trouvé la solution !!!!

Ta solution avec le champs last_post me parrait être une bonne idée

Tu mets a jour la date du dernier post dans l'enregistrement dont le champs rep=0 et tu fait le tri sur last_post

par Darfox » 07 juil. 2005, 21:20

Pour qu'on t'aide il faudrait que tu nous donnes ton code, et tu aurais pu créer un nouveau topic.

par fggdm » 07 juil. 2005, 18:34

J'ai un sytème de post-it qui quand quelque d'important est à faire il m'affiche un petit message en vert et quand c'est pas important le message est gros en rouge cachant ce qui est plus important or souvent dans ces moments là je dors bien que je sois éveillé ce qui provoque un désordre dans mon système nerveux si vous pouvez me dire comment résoudre le problème de ma cafetière dîtes le moi mais c'est pas grave sinon.

par Darfox » 07 juil. 2005, 17:50

Lol
Pour le prochain problème je promet d'être plus claire ](*,) :D

Bon alors en fait dans ma table j'ai des entrées (normal :mrgreen: ) mais le truc c'est qu'il y a des entrées qui ont plus d'importance que d'autre c'est pour ça qu'elles sont marquées grace au champ rep (il s'agit de ceux où rep=0), les autres sont des suppléments à celle importante et on rep=1.
Donc quand je fesais un classement par date en restreignant (je crois pas que ça ce dit :roll: ) à rep=0 et bien j'avais le classement des entrées importantes dans l'ordre où je les avait rentré hors moi ce que je voulais, c'est que dès que j'ajouté une entrée en relation avec une entrée importante et bien celle-ci soit prise en compte dans le classement mais pas dans l'affichage.
En gros si l'entrée important était la première de la base elle se trouverait tout en bas dans le classement, mais si j'ajoutais une entrée en relation avec elle, et bien c'est comme si j'avais modifier la date de l'entrée principal à aujourd'hui, donc elle passe en premier dans le classement (toute fois sans être affiché dans le classement).

Bon la je ne sais vraiment plus quoi dire, si vous avez pas compris, alors oublié tout le sujet sinon vous n'arriverez pas à dormir :lol:

par pjl » 07 juil. 2005, 17:06

J'ai toujours pas compris ....
tu n'es pas le seul.

par zeus » 07 juil. 2005, 17:04

pour toi, quelle est la différence entre last_post et date ?

par Augure » 07 juil. 2005, 17:04

J'ai toujours pas compris .... mais si ça marche ne touche plus à rien.

;-)

par Darfox » 07 juil. 2005, 17:00

Ba ce que je fais c'est détourner le problème :d

Donc ce que j'ai fait c'est que dans ma table j'ai créé un nouveau champ appelé last_post et que j'ajout un élément je met la date de l'ajout dans le champ last_post où l'entré à rep=0 et qui a le meme id_cat. Comme ça j'ai juste à remettre rep=0, dans la requette et de modifer ORDER BY date par ORDER BY last_post.

Voili voilo

par zeus » 07 juil. 2005, 16:40

Donnes quand même la réponse, ça peut servir à quelqu'un d'autre

Mais sinon donnes nous un exemple concret qu'on voit ce que tu veut dire :lol:

par Darfox » 07 juil. 2005, 16:33

C'est bon j'ai trouvé une autre solution plus simple parce que la je crois que je m'exprime mal et que vous ne comprenez pas.

Merci quand meme :wink:

PS : Je considère le topic résolu.

par zeus » 07 juil. 2005, 15:45

Tu es d'accord avec moi que les dates des enregistrements ne changent pas quand tu sélectionnes seulement ceux qui correspondent à la clause WHERE

Donc l'ordre des dates sera le même avec ou sans la clause WHERE

Donc, même si tu enlève les enregistrements qui ont rep=0, l'ordre des dates sera le même

par Darfox » 07 juil. 2005, 15:00

Que tu trie par date et que tu supprimes les lignes inutiles ou bien que tu supprimes les lignes inutiles et que tu trie celles sui restent va donner le même résultat
C'est ce que je me suis dis, c'est pour ça que je l'ai fait. Mais quand j'ai regardé le résultat, ça m'affiché cellement les entrées avec rep=0 mais dans l'ordre de date de celle-ci. Hors quand j'enlève la condition, j'ai toutes les entrée classée par date (dans le bon ordre) c'est pour ça que j'ai dis que logiquement ça devrait marché.
Je vais retesté.

par zeus » 07 juil. 2005, 14:44

Je vais te poser une question qui devrais résoudre ton problème :

Quel va être la différence dans les lignes retournées ? réponse : Aucune

Que tu trie par date et que tu supprimes les lignes inutiles ou bien que tu supprimes les lignes inutiles et que tu trie celles sui restent va donner le même résultat

Pour chipoter, je dirais même que la requête que tu as déjà faite est plus optimisée que celle que tu veux faire car tu réduit le nombre de champs à trier

par Darfox » 07 juil. 2005, 14:43

lol, le problème c'est que j'ai donné une explication et donc les exemples ne sont pas véritable et donc la table contient énormément plus de donné que 3.
J'avais pensé aussi à faire ma requette sans sans le rep=0 de faire le while et dans le while mettre if(rep=0) mais le preoblème c'est qu'il ne m'affiche pas les réponse dans le bon ordre (ce qui n'est pas très logique).

par Maitrepylos » 07 juil. 2005, 14:30

Il ne peut en tenir compte puisque tu lui dis explicitement de ne pas en tenir compte
WHERE id_cat=1 and rep=0 .
ou alors
$result = mysql_query("SELECT * FROM forum_sujet WHERE id_cat=1 ORDER BY date DESC limit '.$limite.','.$nombre; ");

$row = pg_fetch_row($result);

echo $row[0];
echo $_row[1];
et là le troisième sera tenu en compte et pas afficher!