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:
Et aussi :T.ID,T.AGT_NOM,T.AGT_PRE,ROUND( SUM( T.CAE ) , 2 ),ROUND( SUM( T.CAR ) , 2 )
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 :
J'ai fais pleins d'essais et je desespère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part preg_match("/SELECT(.*^(?:FROM))/i",$query2,$parts)
Donc j'en demande aux pros des expressions rationnelles.
Merci pour vos reponses.
Partager