JOINTURE, LIMITATION...

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 : JOINTURE, LIMITATION...

par Cyrano » 25 mai 2008, 12:03

J'ai pas testé, mais à mon avis tu pourrais simplifier comme ceci :

Code : Tout sélectionner

SELECT id, personne, MAX(date) AS date FROM actions AS A GROUP BY personne
Sans garantie, mais à priori je vois pas pourquoi ça marcherait pas aussi bien :-k

par zola2 » 25 mai 2008, 10:11

C'est quand même un peu plus compliqué qu'un GROUP BY !

Voici la requête nécessaire :

Code : Tout sélectionner

SELECT id, personne, date FROM actions AS A WHERE date IN (SELECT MAX(date) FROM actions AS B WHERE A.personne=B.personne) GROUP BY personne
Le petit "WHERE A.personne=B.personne" est assez important ;)

par d0m » 25 mai 2008, 10:02

salut,

tu passes déjà à coté du code...
tu pourrais nous donner ce que tu as déjà fait?

Sinon au lieu de tater tout de suite, prends le temps d'écrire simplement en français ce que tu veux :

"je veux selectionner l'action
pour chaque personne
dont la date est la plus grande"


c'est à dire qu'il faut grouper toutes les actions par personne et chercher dans chaque groupe l'action avec la date la plus élevée.

Et justement pour cela il y a une clause sql : GROUP BY
Tu devrais chercher de ce coté

JOINTURE, LIMITATION...

par zola2 » 25 mai 2008, 09:56

Bonjour :D

Voila en gros j'ai 1 table "actions" qui contient les champs suivants :

- id (int, autoincrement)
- personne (int)
- date (datetime)
- action (int)

Cette table permet de stocker différents actions sur des personnes.

Je veux récupérer uniquement la dernière action de chaque personne...

Pour l'instant... je dois passer à côté de quelque chose... mais ca ne marche pas :cry: