Page 1 sur 1

Requête pour afficher 3 tables ordonner par date ?

Posté : 04 oct. 2008, 15:58
par karty
Bonjour,

voilà je cherche à réaliser une requête mais j'aurais besoin de vos conseils pour y arriver correctement...

J'ai 3 tables dans une base de données :
- articles
- videos
- livres

Chacune d'elle contient :
- titre (articles_titre, videos_titre, livres_titre)
- date (articles_date, videos_date, livres_date)

Je souhaiterais créer une page qui affiche ces différents contenus, mais en prenant la totalité des titres sur les 3 tables et en les ordonnant selon les différentes dates !

Je ne sais pas quelle requête faire, surtout pour le ORDER BY et pour les différents echo sur ma page, je ne sais pas comment regrouper ces 3 tables dans une requête en les triant par leur date... Celà doit être plus compliquer qu'une simple requête ? Quelqu'un pour m'aider ???

Merci d'avance ! Cordialement,

Posté : 04 oct. 2008, 17:44
par savageman

Code : Tout sélectionner

SELECT titre, date FROM ( SELECT articles_titre as titre, articles_date as date UNION SELECT videos_titre as titre, videos_date as date UNION SELECT livres_titre as titre, livres_date as date ) ORDER BY date

Posté : 04 oct. 2008, 19:33
par karty
Merci, j'ai réalisé la requête en rajoutant le FROM et un WHERE au bout, il fallait aussi placé un alias après d'après ce que j'ai compris...

Mais j'ai un problème : si je met la requête UNION avec les livres, mon affichage se limite à 8 résultats !! Comme s'il y avait un bug, alors que si j'enlève l'UNION avec les livres, le résultat n'est pas limité comme je lui demande.

Comment expliquer celà ??


requête qui fonctionne parfaitement

Code : Tout sélectionner

SELECT titre, date FROM ( SELECT articles_diffusion, articles_titre as titre, articles_date as date FROM articles WHERE articles_diffusion = "1" UNION SELECT videos_diffusion, videos_titre as titre, videos_date as date FROM videos WHERE videos_diffusion = "1" ) T ORDER BY date DESC
requête qui limite bizarrement mes résultats à 8 affichages comme si il y avait un bug

Code : Tout sélectionner

SELECT titre, date FROM ( SELECT articles_diffusion, articles_titre as titre, articles_date as date FROM articles WHERE articles_diffusion = "1" UNION SELECT videos_diffusion, videos_titre as titre, videos_date as date FROM videos WHERE videos_diffusion = "1" UNION SELECT livres_diffusion, livres_titre as titre, livres_date as date FROM livres WHERE livres_diffusion = "1" ) T ORDER BY date DESC
Il y a juste l'union livres rajoutés, et aucun bug dans la table livres à priori... Autrement dis je comprends pas pourquoi ça me bloque les résultats ! :( Quelqu'un a une idée ou l'expérience de ce truc bizarre ???

Posté : 05 oct. 2008, 04:02
par Patriboom
Et que donnerait ta requête seule

Code : Tout sélectionner

SELECT livres_diffusion, livres_titre as titre, livres_date as date FROM livres WHERE livres_diffusion = "1"

Posté : 05 oct. 2008, 18:05
par karty
Je viens de trouver pourquoi elle était refuser... :roll: C'était en fait un caractère "&" qui faisait bugué ma page XML au niveau de l'encodage et stoppé la suite des données.

Ca m'étonnait aussi!