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