Rechercher : dans
Par :

MYSQL: Tri par date dans plusieurs tables

Dernière réponse le 29 jui 2008 à 12:33:04 gunsdeluxe, le 11 mar 2008 à 13:41:29 
 Signaler ce message aux modérateurs

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 ?

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « MYSQL: Tri par date dans plusieurs tables » dans :
MySQL - Afficher les informations sur une table VoirPour afficher les informations sur une table TabTest il faut lancer la commande suivante (l'option \G améliore le formatage u résultat) : mysql> show create table TabTest\G *************************** 1. row *************************** ...
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...

1

je suis en galère, le 11 mar 2008 à 14:22:55

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?

Répondre à je suis en galère

2

gunsdeluxe, le 11 mar 2008 à 14:28:31

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é....

Répondre à gunsdeluxe

3

pascal_sql, le 11 mar 2008 à 14:29:27

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.

Répondre à pascal_sql

4

gunsdeluxe, le 11 mar 2008 à 14:35:16

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

Répondre à gunsdeluxe

5

je suis en galère, le 11 mar 2008 à 14:42:52

Merci pascal tu es mon sauveur!
je vé te répondre toute suite

Répondre à je suis en galère

6

pascal_sql, le 11 mar 2008 à 15:45:30

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.

Répondre à pascal_sql

7

gunsdeluxe, le 11 mar 2008 à 16:17:15

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....

Répondre à gunsdeluxe

8

pascal_sql, le 11 mar 2008 à 16:40:34

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

Répondre à pascal_sql

9

gunsdeluxe, le 11 mar 2008 à 16:53:46

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

Répondre à gunsdeluxe

10

 Foxy, le 29 jui 2008 à 12:33:04

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

Répondre à Foxy
Collection CommentÇaMarche.net