Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
904 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete sql compliquée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete sql compliquée

n°1601084
root76
Posté le 20-08-2007 à 14:21:18  profilanswer
 

Bonjour,
 
J'ai une requête un peu compliquée à faire et je sais pas comment m'y prendre, voila mon problème:
j'ai une table T1 et une table T2 T1(idsoc,annee,ca) et T2(id,idsoc,annee,ca_partiel) , telle que T1.idsoc=T2.idsoc et T1.annee=T2.annee.
(sachant que (id) provient d'une autre table.)
 
 
dans ce shchéma pour la même année et pour la même société il peut y avaoir plusieurs chiffre d'affaire partiels
supposns qu'ils sont au nombre de 3 et appeleons les ca1 ca2 ca3
 
mon ut est de construire une requête qui me permet d'avoir en sortie une table T telle que
T (idsoc,annee,ca,ca1,ca2,ca3)
 
merci d'avance


Message édité par root76 le 20-08-2007 à 14:56:31
mood
Publicité
Posté le 20-08-2007 à 14:21:18  profilanswer
 

n°1601127
MagicBuzz
Posté le 20-08-2007 à 15:03:31  profilanswer
 

pas assez de champs dans t2 pour différencier les lignes.
 
il faudrait au moins que tu rajoutes une date, un trimestre ou autre, qui permette de savoir qui est ca1, ca2 et ca3...
parceque pour le moment y'a pas moyen de savoir qui fait quoi.

n°1601141
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-08-2007 à 15:08:09  profilanswer
 

totalement d'accord, je rajouterais même que ça sent la modélisation caca :o
 
Par ailleurs, c'est sur quel SGBD(R)?

n°1601154
MagicBuzz
Posté le 20-08-2007 à 15:20:01  profilanswer
 

vu la modélisation, c'est Access :D
 
sous mysql, il nous aurait posté un bout de code PHP (si possible sans le moindre SQL) en demandant ce qui n'allait pas dans sa requête... :D


Message édité par MagicBuzz le 20-08-2007 à 15:20:58
n°1601163
root76
Posté le 20-08-2007 à 15:25:32  profilanswer
 
n°1601172
MagicBuzz
Posté le 20-08-2007 à 15:32:43  profilanswer
 

t'ain :ouch:
 
vous avez une base aussi pourrie sous DB2 ? :D
 
bon, trouve un moyen d'ajouter un champ dans T2, histoire de savoir dans quel order chronologique au moins lire les lignes. si possible, en trimestres, puisque j'imagine que c'est de résultats trimestrials qu'il s'agit (sinon d'aurait plus de 3 colonnes)
 
sans ça, ça reste possible, mais tu va devoir partir sur des suppositions pourries, genre :

Citation :

en fait, si c'est bien un CA, c'est donc forcément plus grand au fur et à mesure des publications.
donc j'ai mon ordre chronologique.


 
mais avec seulement l'ordre chronologique, tu va te lancer dans une requête de 50 lignes qui va mettre à genoux le serveur (même si c'est du DB2) pendant deux heures pour sortir 3 lignes (à vue de nez 3 niveaux d'imbrications de sous-requêtes, super redondantes, et avec des morceaux de grumeaux dedans genre des regroupements, des >... et j'imagine qu'une société peut ne pas publier de résultat partiel, ou n'en produire qu'un seul à mi-exercice... donc en plus ça va être en jointures externes... alors le plus fun c'est que tu sauras pas dire si ca1 a été publié au mois de mars ou au mois de septembre !)
 
en fait, voilà le principe :
ca1 veut dire que ca1 = min(t2.ca) where c'est la bonne année et la bonne soc.
mais pour ca2 ça se corse, parceque ça va être min(t2.ca) where c'est la bonne année et la bonne soc, mais où t2.ca > min(t2.ca) where c'était bon...
et pour ca3, encore une couche !
 
le plus fun, c'est que pour chaque, en plus ça correspond à une jointure supplémentaire : tu dois joindre 3 fois t2 à t1 pour faire tes 3 colonnes.
 
alors que si t'as une notion de trimestre dans ta table...
 

Code :
  1. select t1.idsoc, t1.annee, t1.ca, t21.ca ca1, t22.ca ca2, t23.ca ca3
  2. from t1
  3. left outer join t2 t21 on t21.idsoc = t1.idsoc and t21.annee = t1.annee and t21.trimestre = 1
  4. left outer join t2 t22 on t22.idsoc = t1.idsoc and t22.annee = t1.annee and t21.trimestre = 2
  5. left outer join t2 t23 on t23.idsoc = t1.idsoc and t23.annee = t1.annee and t21.trimestre = 3


 
Avec des outer join histoire d'avoir des valeurs à NULL si un CA partiel n'a pas été publié
 
 
Bref, ajoute une colonne trimestre.

Message cité 1 fois
Message édité par MagicBuzz le 20-08-2007 à 15:42:06
n°1601190
root76
Posté le 20-08-2007 à 15:48:39  profilanswer
 
n°1601193
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-08-2007 à 15:52:25  profilanswer
 



C'est moi au y'a de l'écho ???
 

n°1601199
rufo
Pas me confondre avec Lycos!
Posté le 20-08-2007 à 15:58:38  profilanswer
 

MagicBuzz a écrit :

t'ain :ouch:
 
...
 
bon, trouve un moyen d'ajouter un champ dans T2, histoire de savoir dans quel order chronologique au moins lire les lignes. si possible, en trimestres, puisque j'imagine que c'est de résultats trimestrials qu'il s'agit (sinon d'aurait plus de 3 colonnes)
 
...


Une année, ça n'a pas 4 trimestres? :??: Cela dit, vu que t'as écrit "trimestrials" et "d'aurait", j'imagine que t'étais bourré :D

n°1601201
MagicBuzz
Posté le 20-08-2007 à 15:59:08  profilanswer
 

j'imagine que la publication du ca partiel du 4° trimestre, c'est le ca final :o

mood
Publicité
Posté le 20-08-2007 à 15:59:08  profilanswer
 

n°1601203
MagicBuzz
Posté le 20-08-2007 à 15:59:40  profilanswer
 

anapajari a écrit :


C'est moi au y'a de l'écho ???
 


nan, il a buggé :D

n°1601439
root76
Posté le 20-08-2007 à 22:04:09  profilanswer
 

ok merci pour votre aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete sql compliquée

 

Sujets relatifs
Besoin d'aide pour requête SQLRequête SQL - limiter les résultats
[résolu] Besoin d'aide pour écrire une requête SQL compliquéeStructure de requete compliquée HELP PLEASE
Access, requète un peu compliquée...une requete assez compliquée
A L'AIDE: requête sql trop compliquée pour moi ![Access]Je bloque sur une requête qui ne me semblait pas compliquée...
[ACCESS] Requete SQL compliquée :([MySQL] Requête assez compliquée
Plus de sujets relatifs à : requete sql compliquée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR