Bonjour,

Je suis assez embêté par le temps de chargement beaucoup trop de long de mes pages. En effet, via PHP je dois générer un tableau dynamique et afficher des informations pour chaque article dans le tableau.
Pour se faire j'ai créé une abomination que voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(SELECT r.article_id, a.titre, a.texte, r.ss_titre, r.lieu_id, d.date1, d.date2
FROM ARTICLES a
INNER JOIN RENSEIGNEMENTS r ON a.id = r.article_id
INNER JOIN DATES d ON r.date_id = d.id
WHERE a.edition IN ('NANCY', 'NANCY-METZ', 'NANCY-METZ-STRASB', 'NANCY-METZ-STR-DIJON', 'TTES EDITIONS')
AND a.rubrique = 'EXPOS'
AND d.date1 = ( SELECT MIN( d1.date1 ) 
                       FROM ARTICLES a1
                       INNER JOIN RENSEIGNEMENTS r1 ON a1.id = r1.article_id
                       INNER JOIN DATES d1 ON r1.date_id = d1.id
                       WHERE a1.titre = a.titre )
GROUP BY a.titre)
UNION ALL
(SELECT id, titre, texte, null, null, 9999, null 
FROM ARTICLES a 
WHERE id NOT IN (SELECT a.id FROM ARTICLES a, RENSEIGNEMENTS r WHERE a.id=r.article_id) 
AND a.edition IN ('NANCY', 'NANCY-METZ', 'NANCY-METZ-STRASB', 'NANCY-METZ-STR-DIJON', 'TTES EDITIONS') 
AND a.rubrique = 'EXPOS') 
ORDER BY date1
En fait certains articles n'ont pas certaines informations, du coup cela rend la requête beaucoup plus compliquée. La première partie récupère les articles classiques et les trie par date (en prenant la date minimum disponible pour l'article, car un article peut avoir plusieurs dates) et la deuxième partie récupère ceux à part, qui n'ont pas de date.

Du coup comme je n'ai pas trouvé comme faire les deux requêtes en même temps, j'ai utilisé un UNION ALL

Si quelqu'un a une idée pour rendre plus simple le bouzin je suis preneur.

Merci