Page 1 sur 1

Recuperer les X derniers enregistrements

Posté : 26 sept. 2005, 11:02
par sload
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

Posté : 26 sept. 2005, 11:12
par HD
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 ; 

} 

Posté : 26 sept. 2005, 11:15
par heddicmi
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

Posté : 26 sept. 2005, 11:21
par HD
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 :(

Posté : 26 sept. 2005, 13:41
par sload
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

Posté : 26 sept. 2005, 14:45
par Tho
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

Posté : 26 sept. 2005, 16:20
par zeus
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