Bonjour,

Voila, je viens vers vous pour un petit problème d'optimisation de requêtes.

J'ai 2 tables : entreprise (env. 6000 enr.) et personnel (env. 10000 enr.)
Je souhaite récupérer une table contenant les renseignements des entreprises et de son personnel.

Ma première requête est la suivante :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
$resSQL = mysql_query("CREATE TEMPORARY TABLE table_temp1 SELECT id_entreprise, GROUP_CONCAT(CONCAT(nom, ' ', prenom)) AS nom_prenom FROM personnel GROUP BY id_entreprise");

La deuxième :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$resSQL = mysql_query("CREATE TEMPORARY TABLE table_temp2 SELECT id_entreprise, nom_entreprise, cp_entreprise, ville_entreprise, IFNULL((SELECT nom_prenom FROM table_temp1 WHERE id_entreprise = entreprise.id_entreprise), ' ') AS nom_prenom FROM entreprise ORDER BY nom_entreprise");

Je récupère dans table_temp2, l'ensemble des infos sur l'entreprise et les noms et prénoms du personnel (chaîne séparée par une virgule).

Cela fonctionne, mais c'est un peut lent ....

Auriez vous une autre solution ?

J'ai essayé de bascule cela dans une procédure stockée, c'est pareil !
Si j'intègre la première requête dans la deuxième, cela prend trop de temps à l'exécution et mysql tombe !

Merci d'avance

A+