PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 22-06-2011 08:49:21

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Besoin d'un avis éclairé

Bonjour,

J'ai besoin d'un avis éclairé sur la réalisation d'une requête complexe. Ce post s'adresse donc en particulier à notre amis MK.
Voila, j'ai environ 4 niveaux de sous-requêtes dans lesquels je dois remonter une somme de valeurs d'entités par entité (les mêmes). Le truc c'est qu'au niveau n-1 ou n+1 selon comment on voit les choses j'ai les bonnes informations mais la complexité viens du fait que je dois remonter le tout au sein d'une requête union, et je me demande quel est la meilleure méthode pour regrouper les champs d'une requête union.

Je donne un exemple.


SELECT ..., ..., ... t2.a_id as code, t2.a_value as value FROM .....
UNION
SELECT ..., ..., ... t3.a_id as code, t3.a_value as value FROM ....
 

C'est en gros ce que j'ai en simplifiant pas mal, où le champ code est un regroupement par id d'une entité et value est une somme regroupée de valeurs de cette même entité.
A partir de là j'ai besoin de transformer cette requete en une seule requête non réunie dans laquelle j'ai un regroupement tel que Lcode= regroupement de t2.a_id et t3.a_id et Lvalue = somme (t2.a_value et t3.a_value pour chaque valeur de Lcode) :

SELECT ..., ..., a_id as Lcode, a_value as Lvalue ... FROM

Si y a un truc de pas clair n'hésitez pas à demander.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#2 22-06-2011 08:56:45

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Besoin d'un avis éclairé

Donc pour donner mon idée de résolution ca serait de passer la requête union en requete dérivée de la seconde en faisant un regroupement par code du style


SELECT ..., ..., t10.code as Lcode, SUM(t10.value) as Lvalue, ... FROM ....,
(SELECT ..., ..., ... t2.a_id as code, t2.a_value as value FROM .....
UNION
SELECT ..., ..., ... t3.a_id as code, t3.a_value as value FROM ....) as t10 .... GROUP BY t10.code, t10.value ....
 

Ne pouvant pas encore injecter les données dans la DB, je suis obligé de rester sur la théorie pour le moment.

Qu'en penses notre cher ami MK?

Dernière modification par Jc (22-06-2011 09:09:17)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 22-06-2011 09:26:32

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Besoin d'un avis éclairé

Saluton,
J'en pense que la seconde clause du GROUP BY ne m'apparaît pas d'un intérêt évident.
Et que, puisque tu surnommes la colonne t10.code tu devrais utiliser ce surnom dans la clause GROUP BY.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 22-06-2011 09:28:24

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Besoin d'un avis éclairé

Autre chose, MySQL acceptera la clause GROUP BY sur uniquement la colonne Lcode, mais les colonnes ...,... retournées seront du grand n'importe quoi au petit bonheur.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 22-06-2011 09:50:31

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Besoin d'un avis éclairé

Merci MK wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums