Rechercher : dans
Par :

Selectionner les dernieres entrées dans BDD

Dernière réponse le 1 aoû 2008 à 16:34:26 ZebraII, le 1 aoû 2008 à 13:59:14 
 Signaler ce message aux modérateurs

Bonjour,

Bon j'ai un petit souci depuis un moment et je n'arrive vraiment pas à le résoudre :

J'ai une base de données contenant plusieurs tables, mon probleme est simple, je voudrais pouvoir effectuer une requête qui me permette de récupérer les 10 dernieres entrées toutes tables confondues dans la base de données. Ces données n'ont rien avoir entre elles je voudrais juste lister les 10 plus récentes, mais pas dans chacune des tables encore une fois je le repéte toutes tables confondues, comment faire ?

Meilleures réponses pour « selectionner les dernieres entrées dans BDD » dans :
Accélérer les accès disque (désactiver la date de dernier accès) VoirLa plupart des systèmes d'exploitation actuels utilisent des systèmes de fichiers avec des fonctions avancées : gestion des droits, journalisation... Entre autres, NTFS (Windows) et ext3 (Linux) sont capables d'enregistrer la date de dernier accès à...
Utiliser la vidéo surveillance en entreprise VoirLa vidéo surveillance d'entreprise sur IP (sur Internet) consiste à installer des caméras de surveillance sur un lieu de travail (bureau, magasin, entrepôt, etc.) reliées à un ordinateur. Principal avantage : la numérisation permet une grande...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...
Perl - Entrée et sortie standards VoirQu'appelle-t-on entrée standard et sortie standard ? Perl permet d'écrire sur la sortie standard, appelée STDOUT et de lire sur l'entrée standard (STDIN). Il s'agit de deux descripteurs fournis par le système d'exploitation et permettant...
Tableur - La saisie de données VoirSAISIE DE DONNEES LITTERALES Vous êtes prêt à entrer des données dans votre feuille de calcul. Nous vous déconseillons toutefois de le faire avant d’avoir réfléchi soigneusement à ce que vous voulez obtenir : de façon générale, mieux vaut bâtir sur...

1

giheller, le 1 aoû 2008 à 14:07:58

Bonjour,
Il faut avoir dans chacune des tables une information qui permette de faire la comparaison (comme par exemple une date de saisie), sinon rien ne permettra de savoir quel élément d'une table est postérieur à un autre élément d'une autre table.
Ensuite, en supposant que les tables n'ont pas la même structure, il faudra créer une table temporaire qui pourrait avoir la structure suivante :

élément de compraison et concaténation des informations d'une table.

dans laquelle on mettrait toutes les tables.

On requêtre sur la table temporarire avec un tri desc sur le critère de coparaison avec limit 0,10 donnera la solution. JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

3

ZebraII, le 1 aoû 2008 à 14:22:12

En effet, on pourrait faire celà sauf qu'effectivement toutes les tables ont la meme structure... je sais bien que j'aurais du n'en faire qu'une seule et rajouter un champ pour différencier les différents post, mais il est trop tard a présent...

Répondre à ZebraII

4

giheller, le 1 aoû 2008 à 14:24:03

Ok même stucture mais quel est le champs qui permet de classer les enregistrements dans le temps ?
si il n'y en a pas, le problème est insoluble JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

6

ZebraII, le 1 aoû 2008 à 14:25:23

On pourrait en utiliser plusieurs, un champ ID qui s'auto incrémente, pourrait faire l'affaire puisqu'il existe, mais il me semblerait plus sur d'utiliser le champ Date qui effectivement contient la date et l'heure précise du POST.

Répondre à ZebraII

7

giheller, le 1 aoû 2008 à 14:31:37
  • +1

Non, un champ qui s'auto incrémente ne permet pas de classer les enregistrements d'une table par rapport à une autre, ou alors il faudrait que l'auto incrément soit pour toutes les tables !

il faut donc une information discriminante de chaque enregistrement. Si cela existe alors quelque chose du genre
select *, champs_discriminant as tri from table1, table2, table3 order by tri desc JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

8

ZebraII, le 1 aoû 2008 à 14:36:46

Ah, bien vu, je vais aller essayer ça sur le champ, si je puis dire, merci bien, je n'y aurai pas pensé, comme quoi...

Répondre à ZebraII

9

ZebraII, le 1 aoû 2008 à 14:43:32

J'obtiens cela :

Erreur SQL !
SELECT *, date as tri FROM annonces, revue, salons WHERE TO_DAYS(NOW()) - TO_DAYS(date) <= 30 ORDER BY tri DESC LIMIT 5
Column 'date' in field list is ambiguous

Répondre à ZebraII

10

giheller, le 1 aoû 2008 à 14:45:08

Date est-il un champs des tables ?
ensuite pourquoi faire un where, le tri suffira JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

11

ZebraII, le 1 aoû 2008 à 14:46:38

Oui date est un champ commun pour chaque table, enfin le where permet a ces post de disparaitre de la HOME apres trente jours si jamais aucun autre post n'est effectué

Répondre à ZebraII

13

giheller, le 1 aoû 2008 à 14:50:58

Il y a donc deux choses :
enlever de vieilles lignes et trier plusieurs tables ensemble JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

12

giheller, le 1 aoû 2008 à 14:49:26

Alors puisque toutes les tables ont la même structure, les "merger" dans une table temporaire et trier.
à moins que l'on puisse écrire date.annonces as tri, date.revue as tri, date.salons as tri JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

14

ZebraII, le 1 aoû 2008 à 14:58:03

Erreur SQL !
SELECT *,annonces.date as tri, revue.date as tri, salons.date as tri FROM annonces, revue, salons ORDER BY tri DESC LIMIT 5
Column 'tri' in order clause is ambiguous

je vais finir par m'arracher les cheveux....

Répondre à ZebraII

15

giheller, le 1 aoû 2008 à 15:01:25

Non gardectes cheveux il reste la solution de fusion des tables dans une table temporaire (pusiqu'elle ont la même structure) JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

16

ZebraII, le 1 aoû 2008 à 15:04:03

Bon tres bien lol, en revanche en y reflechissant bien je crois que je n'ai aucune idée de la façon dont on fait ca !

Répondre à ZebraII

17

giheller, le 1 aoû 2008 à 15:05:59

Create temporary tabletemp (select * from annonce, revue, salon)
select * from tabletemp order by date desc JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

18

ZebraII, le 1 aoû 2008 à 15:21:22

Il ne veut pas creer cette table, pourrais je avoir la syntraxe entiere, j'ai du oublier un truc...

Répondre à ZebraII

19

ZebraII, le 1 aoû 2008 à 15:36:11

Erreur SQL !
CREATE TEMPORARY TABLE temp (SELECT titre, date, chapeau FROM annonces, revue, salons)
Column 'titre' in field list is ambiguous

Répondre à ZebraII

20

 giheller, le 1 aoû 2008 à 16:34:26

Dans ma requête c'est select *


ce test fonctionne trés bien chez moi

create table t3 (select * from t1);
insert into t3 (select * from t2);
select * from t3 order by date desc;

avais-tu eu mon message en mail privé ? JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

2

CaPiT, le 1 aoû 2008 à 14:08:36

Peux tu mettres ta requête SQL ici.

Sinon pour t'aider, il faut que dans ton SQL tu fassses un SELECT TOP 10 [nomchamp] ...

Répondre à CaPiT

5

ZebraII, le 1 aoû 2008 à 14:24:13

Non je ne peux pas faire cela, puisque comme je viens de le signaler un tout petit peu plus tot, toutes les tables ont la meme strucure, du reste je pourrais faire un selct TOP 10 si ma requête ne portait que sur une seule table, or ce n'est pas le cas. Je ne peux pas mettre ma requête puisqu'elle n'existe pas encore sans quoi je ne serais pas la ;-) ...

Répondre à ZebraII