Bonjour,

Je souhaite extraire des elements d'une requetes SQL.
Mon but est de recuperer les elements avant le from de la requete et les elements après le from. Mais la requete comporte plusieurs from et je ne souahites recuperer les infos que du 1er from.
Voici une requete exemple :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  SELECT T.ID,T.AGT_NOM,T.AGT_PRE,ROUND( SUM( T.CAE ) , 2 ),ROUND( SUM( T.CAR ) , 2 )
  FROM
  (
  (SELECT agent_id ID, agent_nom AGT_NOM, agent_prenom AGT_PRE,
  (SELECT SUM( action_even_ca ) FROM action_even WHERE action_even_vente = 'N' AND action_even_agent_affect = agent_id ) CAE
  FROM agent,action_even
  WHERE action_even_agent_affect = agent_id
  GROUP BY agent_id ORDER BY agent_nom, agent_id)
  UNION ALL
  (SELECT agent_id ID, agent_nom AGT_NOM, agent_prenom AGT_PRE,
  (SELECT SUM( affaire_ca_realise ) FROM affaire WHERE affaire_vente = 'N' AND affaire_agent_affect = agent_id ) CAE
  FROM agent,affaire
  WHERE affaire_agent_affect = agent_id
  GROUP BY agent_id ORDER BY agent_nom, agent_id)
  ) T  GROUP BY 1;

Mon but est de recuperer:
T.ID,T.AGT_NOM,T.AGT_PRE,ROUND( SUM( T.CAE ) , 2 ),ROUND( SUM( T.CAR ) , 2 )
Et aussi :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
(
  (SELECT agent_id ID, agent_nom AGT_NOM, agent_prenom AGT_PRE,
  (SELECT SUM( action_even_ca ) FROM action_even WHERE action_even_vente = 'N' AND action_even_agent_affect = agent_id ) CAE
  FROM agent,action_even
  WHERE action_even_agent_affect = agent_id
  GROUP BY agent_id ORDER BY agent_nom, agent_id)
  UNION ALL
  (SELECT agent_id ID, agent_nom AGT_NOM, agent_prenom AGT_PRE,
  (SELECT SUM( affaire_ca_realise ) FROM affaire WHERE affaire_vente = 'N' AND affaire_agent_affect = agent_id ) CAE
  FROM agent,affaire
  WHERE affaire_agent_affect = agent_id
  GROUP BY agent_id ORDER BY agent_nom, agent_id)
  ) T  GROUP BY 1;


Voici un essai qui ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
preg_match("/SELECT(.*^(?:FROM))/i",$query2,$parts)
J'ai fais pleins d'essais et je desespère.

Donc j'en demande aux pros des expressions rationnelles.

Merci pour vos reponses.