Recuperer les X derniers enregistrements

Eléphanteau du PHP | 22 Messages

26 sept. 2005, 11:02

Bonjour à tous,

Mon problème est le suivant j'ai 3 tables A, B,C contenant chacune un champ LASTUPDATE.

Je voudrais récuperer les X derniers enregistrements les plus récents quelque soit la table.

Comment faire ??

Merci d'avance
Antoine PACAUD
Antoine PACAUD
www.sloadnet.com

HD
Mammouth du PHP | 1181 Messages

26 sept. 2005, 11:12

on suppose que id est ta clé primaire
on recupere l'id le plus grand de ta table A
$query="select max(id) from A"; 
$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); 
$id = mysql_fetch_assoc($result); 
donc on veut les enregistrements de (id - x + 1) à (id)
$var = id - x ;

while ($id > $var) { 

$query="Select LASTUPDATE FROM A WHERE id=$id"; 
$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); 

$id = $id -1 ; 

} 
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Mammouth du PHP | 568 Messages

26 sept. 2005, 11:15

Tu ne peux pas faire sur une requête, la récupération sur tes 3 tables en même temps... Tu vas devoir composer... Pense aussi à utiliser LIMIT
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

HD
Mammouth du PHP | 1181 Messages

26 sept. 2005, 11:21

oups mon code ne tiens pas compte de
quelque soit la table.
j'essaierai de voir ca ce soir si ce n'est toujour pas resolu d'ici là

edit : ah la la ! et en plus je l'ai basé sur l'id et pas sur le lastupdate ! tout est à refaire
je vais me coucher ca vaudrait mieux :(
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 22 Messages

26 sept. 2005, 13:41

Non finalement c'est bon je fais table par table et je compare ensuite ... Une seule requete pour les 3 tables ca n'a pas l'air possible ... Snif !

En tout cas merci !
Antoine
Antoine PACAUD
www.sloadnet.com

Tho
Eléphant du PHP | 58 Messages

26 sept. 2005, 14:45

c'est possible à condition d'avoir les mêmes nombres et types de champs.

Code : Tout sélectionner

( ( SELECT id, lastupdate FROM A ) UNION ( SELECT id, lastupdate FROM B ) UNION ( SELECT id, lastupdate FROM C ) ) ORDER BY lastupdate DESC LIMIT 0,10

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 sept. 2005, 16:20

Tu peut aussi penser au JOIN

Code : Tout sélectionner

SELECT lastupdate FROM (A JOIN B ON A.lastupdate=B.lastupdate) JOIN C ON A.lastupdate=B.lastupdate ORDER BY A.lastupdate LIMIT X,Y
Mais JOIN n'est pas inclu dans toutes les distributions MySQL
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer