[RESOLU] Select et Limit commune à plusieurs tables

Eléphant du PHP | 116 Messages

14 janv. 2015, 09:26

Bonjour à tous,

Une petite question en SQL. Je sais pas trop comment m'y prendre. J'ai plusieurs tables, indépendantes les unes des autres, qui ont toute un champ "date" + en suffixe, le nom de la table. exemple date_actu (DATETIME), date_dossier (DATETIME)... Ainsi de suite. Il me faudrait donc faire une requête qui prend les 30 dernières entrées de TOUTES les tables.

Du genre SELECT * FROM * ORDER BY date_* DESC LIMIT 0,30.

J'aurai ensuite besoin d'y caler quelques where. Et le limite me sera utile pour faire du rafraîchissement ajax en scroll info. Un peu comme un newsfeed Facebook qui va piocher des infos partout en fait... Est-ce que vous pensez qu'une requête/série de requête pourrait faire l'affaire ou est ce que vous pensez que je suis bon pour passer par une table intermédiaire ?

J'attends vos pistes de réflexion,
@+,
Computarelier

Mammouth du PHP | 688 Messages

14 janv. 2015, 16:17

cela doit pouvoir se faire avec UNION (select date1 from table1 union select date2 from table2 union ...), après je sais plus si le limit s'applique à chaque sous requete ou au total.
ensuite, il faut voir si les perfs suivent ou s'il vaux mieux faire autrement.

Eléphant du PHP | 116 Messages

14 janv. 2015, 16:23

Hmm.. Je vais aller me document sur Union... Mais j'avais regardé hier et j'avais pas été spécialement emballé ! :)

A voir ce que ça donne, et merci de ton retour !
@+,
Computarelier

Eléphant du PHP | 116 Messages

18 janv. 2015, 11:26

hmm... Je continue de creuser, mais vu que mes tables ont pas le même format, c'est un peu bloquant... Je vous tiens au courant :-)
@+,
Computarelier

Mammouth du PHP | 688 Messages

18 janv. 2015, 16:05

select concat(champ1, champ2) as txt, date from table1 union select concat(champ1, champ2, champ3) as txt, date from table2 union select concat(champ1, ' du texte ', champ2) as txt, date from table3

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

19 janv. 2015, 10:43

ou bien utiliser "null" ?

select champ1, champ2 from table1
UNION
select champX, null from table2

Eléphant du PHP | 116 Messages

22 janv. 2015, 13:29

Exactement, j'ai eu besoin d'un peu de concat et de 'nomDeLaTable' as 'tableOrigine'... pour obtenir le bon nombre de champs.

Merci à tous pour vos pistes,
@+,
Computarelier