MYSQL: Tri par date dans plusieurs tables

Fermé
gunsdeluxe - 11 mars 2008 à 13:41
 Foxy - 29 juil. 2008 à 12:33
Bonjour,
En bref, j'ai 7 tables qui ont une structure différente mais qui ont toutes un champs contenant la date d'enregistrement de chaque tuple.

Je voudrai récupérer toutes les infos des 5 enregistrements les plus récents, toutes tables confondues.

Comment faire ?

5 réponses

je suis en galère
11 mars 2008 à 14:22
Bonjour excuse moi de te déranger, mais je vois que tu dois connaitre apache, mySQL, et PHP.Je voudrais installer apache, mySQL, et PHP sous windows (sans easy php): est ce que je dois les installer dans un méme dossier ? ou dans des dossiers différents? et est-ce que je peut les installées sur ma cléf usb?
0
Bonjour, je ne saurais pas t'aider, je travaille toujours online ou avec wamp. Je n'ai jamais installé tout séparément.
Désolé....
0
bonjour,
la question manque d'informations. Quelle version de Mysql (4 ou 5) ? Quel langage voulez-vous utiliser (Php, Asp.net, ...)?
Quelle sera la présentation de la sortie (Par exemple une seule table HTML(ou div ou autre) ou plusieurs) ?

A partir de là je vous donne quelques éléments de réponse :
Si MYSQL V5 : adoptez une solution orienté SQL (c'est plus élégant et surtout plus rapide) avec la création de 5 vues (Create view ....) avec les champs que vous voulez récupérer avec les options limit et Order by.
Si les structures des résultats sont les mêmes et que vous voulez afficher en un seul lieu créez une vue à partir de ces vues en utilisant l'opérateur UNION.

Ensuite dans un cas comme dans l'autre écrivez votre script PHP ou autre par une gestion classique de curseur (ResultSet).

Voilà pour un début de réponse.

P.
0
mysql 5 + php 5

Je veux récuperer ces 5 dernières lignes ajoutées pour faire un tableau "Derniers ajouts" sur ma page d'accueil.

Par exemple :
chiens (id, race, couleur, date_ajout)
fruits (id, nom, saison, date_ajout)
voitures (id, marque, modele, annee, date_ajout)

Je veux prendre les 5 lignes ayant le date_ajout le plus récent.

Merci pour votre réponse
0
je suis en galère
11 mars 2008 à 14:42
merci pascal tu es mon sauveur!
je vé te répondre toute suite
0
pascal_sql Messages postés 5 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 15:45
Cinq vues donc
Du type dans un outil MYSQL (type mysqlquerybrowser ou phpmyadmin, si vous êtes sous windows je vous recommande le premier)

Create view cinq_derniers_chiens as select * from chiens order by date_ajout limit 0,5

Testez d'abord la requête (vérifiez si order by est avant ou en dernier comme SQL-Ansi le voudrait, mais je n'ai pas mysql sous la main et je ne peu vérifier de suite)
Et ensuite traitez ça avec du PHP. Une view se traite comme une table.
0
Merci mais ce n'est pas encore ce que je veux.
je voudrai les 5 derniers ajouts dans toutes les tables confondues, pas seulement celle des chiens...sinon ça ne me poserait aucun problème...

Si par exemple : j'ajoute trois chiens puis une voiture puis un fruit, je veux que ma requete me retourne
1. les infos du fruit
2. les infos de la voiture
3. les infos du chien
4. les infos du chien
5. les infos du chien

Peut être que ce n'est pas possible....
0
pascal_sql Messages postés 5 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 16:40
re,
j'ai donné la réponse avec le UNION mais il faut que les diverses tables est la même structure (pas nécessairement les mêmes noms de champs mais le même schéma)

dans ce cas la requête suivante suffirait (à adapter bien sûr)
admettons 2 tables de même schéma : voitures et parfums avec la colonne date_... en 2ème position

select * from voitures
union
select * from parfums
order by 2 limit 0,5
0
non pas possible, c'est pour ça que j'avais précisé que les tables n'ont pas la même structure (pas le même schéma)

Enfin merci pour ton aide, je vais m'arranger autrement...

Bonne fin de journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Si c'est juste un problème de schéma, il suffit de remplacer select * par select (schema)...
0