Selectionner les dernieres entrées dans BDD

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 ?

2 réponses

  1. 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.
    0
    1. 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...
      0
    2. @ZebraIIOk 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
      -1
    3. @gihellerOn 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.
      0
    4. @ZebraIINon, 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
      0
    5. @gihellerAh, bien vu, je vais aller essayer ça sur le champ, si je puis dire, merci bien, je n'y aurai pas pensé, comme quoi...
      0
  2. 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] ...
    0
    1. 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 ;-) ...
      0