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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL tri calcul sur 2 tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL tri calcul sur 2 tables

n°2068850
Jiibax
Posté le 08-04-2011 à 14:34:36  profilanswer
 

Bonjour,
 
Je recherche une requete sql pouvant trier et calculer sur 2 tables
 
table A:
Compte --> text
ref --> Text  
qt --> int
Prix --> float
 
table B
ref --> Text
 
Et je voudrais calculer est récupéré les données de la table A  
1 trier par compte
 
2 calculer les qt total mais la est le pb car j'ai besoin de 2 chiffres différent  
a) si tbaleA.ref est présent dans la tableB. ref alors on calcule la qt est récupère vers Bqt
b) sinon on calcule est on récupère ver Aqt
 
3) calculer le prix total par rapport à la quantité
a) si tbaleA.ref est present dans la table B. ref alors on calcule la qte est récupère vers Bprix
b) sinon on calcule est on récupère ver Aprix
 
Donc j'aurai comme tableau :
compte - Aqt - Bqt - Aprix - Bprix
 
Donc j'ai vue avec des CASE ou JOIN mais pas evident donc si quelqu'un pouvais juste m'expliquai comment faire...
 
Voila j’espère avoir été claire pas évident à expliquer !!!
 
Merci d'avance

mood
Publicité
Posté le 08-04-2011 à 14:34:36  profilanswer
 

n°2068855
rufo
Pas me confondre avec Lycos!
Posté le 08-04-2011 à 14:45:21  profilanswer
 

Non, t'es pas clair du tout :/ En +, tu sembles ne pas nous donner le bon contenu de la table B car dans en début de ton post, on a l'impression qu'il n'y a qu'un champ dedans, alors que par la suite, tu parles d'autres champs. Merci aussi de nous par quelle relations ces 2 tables sont liées entre elles...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2068866
Jiibax
Posté le 08-04-2011 à 15:06:05  profilanswer
 

Dans la Table B j'ai besoin que de Ref le reste ne m'es pas utile
 
donc Table B
Ref--> text
Designation--> text
 
le 2 tables son liée pour Ref justement
 
En faite ce que je veux faire c'est 2 calcul bien différents entre table A et B
un test qui va vérifier tablA.ref qui est présent dans la tableB.ref
si c'est le cas j'ai plusieurs calcul :  
SUM(tableA.qt*tableA.prix) As TPixA
SUM(tableA.qt) As TqtA
 
si jamais ma ref n'est pas trouver on a 2 autres calcul
SUM(tableA.qt*tableA.prix) As TPixB
SUM(tableA.qt) As TqtB
 
Après j'ai un tri par compte et le résulta devrai me donner ceci par exemple
 
Compte  -  TqtA  -  TPixA  -  TqtB   -   TqtB
xy             1500     2500      250        500
xx              1450     2500      300        350
 
J'arrive sans souci à faire le tri de ma table A avec le calcul des qt et prix
Mais la je veux faire les calculs par rapport au ref présent dans la tableB c'est pour faire des states.
 
voila et je suis sous MySql

n°2068870
rufo
Pas me confondre avec Lycos!
Posté le 08-04-2011 à 15:21:10  profilanswer
 

Ben déjà, la mise en page que tu proposes ne pourra pas se faire avec juste du SQL à mon avis :/
Ensuite, si ton besoin est juste de savoir si la réf est présente dans la table B, suffit de rajouter le champ désignation et faire un LEFT JOIN entre table A et table B. La désignation vaudra NULL si la réf de la table A n'est pas présente dans B...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2068880
Paulp
~, sweet ~
Posté le 08-04-2011 à 15:34:16  profilanswer
 

Ca devrait marcher

Code :
  1. SELECT Compte, SUM(QtA), SUM(PrixA), SUM(QtB), SUM(PrixB) FROM
  2. ( SELECT
  3. A.Compte, IF(B.ref,NULL,A.qt) AS QtA, IF(B.ref,NULL,A.qt * A.prix) AS PrixA
  4. FROM A, IF(B.ref,A.qt,NULL) AS QtB, IF(B.ref,A.qt * A.prix,NULL) AS PrixB
  5. LEFT JOIN B ON B.ref = A.ref
  6. ) GROUP BY Compte


 
Rassure moi, quand tu parles de champ text, c'est pas vraiment des champs de type text, si ?

n°2068885
Jiibax
Posté le 08-04-2011 à 15:38:23  profilanswer
 

Si malheureusement j'ai pas trop le choix car une ref peut être numérique ou alpha ou alphanumérique.
 

n°2068887
Jiibax
Posté le 08-04-2011 à 15:38:57  profilanswer
 

merci pour ta réponse je vais tester ça de suite :)

n°2068902
Paulp
~, sweet ~
Posté le 08-04-2011 à 16:06:15  profilanswer
 

Jiibax a écrit :

Si malheureusement j'ai pas trop le choix car une ref peut être numérique ou alpha ou alphanumérique.


Dans ce cas, utilise une clé numérique non signifiante, ou au moins un type char plutôt que text ... j'ose pas imaginer les indexs ...

n°2069210
rufo
Pas me confondre avec Lycos!
Posté le 11-04-2011 à 10:19:29  profilanswer
 

C'est clair :/ Vaut mieux avoir une clé primaire de type integer. C'est bien plus efficace en terme de perfs (pour les jointures) et en terme de stockage (moins de place).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2069274
Jiibax
Posté le 11-04-2011 à 15:26:21  profilanswer
 

Merci pour la requête qui m'a bien aider :) J'ai du un peu la modifier pour certaines raison et pour ireport car j'obtenu pas le resulta voulu :) Maintenant c'est ok !! merci
Par contre c'est une table qui restera fixe et qui auras au grand max 150 enregistrements.
Désoler je débute en sql.


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

  SQL tri calcul sur 2 tables

 

Sujets relatifs
SQL afficher le résultat avec plus de decimales[SQL]Problème d'accents
Probleme fonction SWITCH SQL ACCESS[RESOLU] problème requete SQL 2008
Php et Join SQLErreur SQL
[SQL][Resolu] requete imbriqué[resolu] problème d'injection SQL, doctrine orm
Joindre 4 tables[aide] ACCESS, création tables (appliquée pour une gestion budget)
Plus de sujets relatifs à : SQL tri calcul sur 2 tables


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