Il y a actuellement 94 visiteurs
Samedi 31 Juillet 2021
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

SQL

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

SQL

Message le 08 Avr 2011 08:22

Bonjour, cela fais un ti moment que je me suis pas reco ici beaucoup de boulot ^^

Mais la je me retrouve avec un petit souci sur une requete SQL !!!

Donc voila ma base principale et constituer de plusieurs tables et dans chaque table plusieurs structure jusque la rien de bien méchant ^^

J'utilise Ireport pour généré certaine state sans aucun souci.
Mais la je voudrai faire un tableau en récupérant des valeur sur 2 tables différente !!!
c'est valeur son un compte une quantité, ref et un prix:
- sachant que j'ai 2 tables différente une qu'on va appeler table A et l'autre table B j'ai une troisième table C qu'on ne s'en occupera pas car si ref de A n'est pas dans B alors elle est obligatoirement dans C
- sachant que pour chaque compte, quantité, ref et prix sont stocker dans la table A
- sachant q'une ref peu être aussi dans la table B mais pas dans C et si elle n'est pas dans B elle est forcement dans C

Donc je voudrai trier( par compte) c'est 2 tables et récupéré les données

Mon souci c'est que je voudrai utilise un IF mais apparemment c'est autrement en SQL il faut utiliser la commande CASE WHEN THEN

Mais j'arrive pas a exporter correctement soit pour chaque compte qui ce trouve dans la table B il me calcul toute la table B ou alors je me retrouve avec un NULL partout.

Donc si quelqu'un à des infos a me donner sur la façon de traiter ce probleme :)

Marci d'avance
Jiib

PS: je veux tout faire sur une seul requête !
Jiibax
Sous Expert(e)
Sous Expert(e)
 
Messages: 52
Inscription: 29 Sep 2010 16:02
 


Re: SQL

Message le 08 Avr 2011 09:29

Salut,

J'ai rien compris à ce que contenait tes tables ni ce que doit rendre ta requête, tu peux nous donner la liste des champs de chaque table, en notant ceux qui sont des clés primaires ? Et la liste des champs que tu veux récupérer dans ta requête.
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Re: SQL

Message le 08 Avr 2011 10:02

Salut, oui pas évident à expliquer...

donc ma requete ce portera sur 2 tables :

Table A
- Compte --> texte
- Ref --> texte --> clé primaire
- qte --> int(11)
- prix --> float

Table B
- Ref --> texte

voila mes 2 tables.

et je voudrais calculer est récupéré les données de la table A
1 trier par compte
2 calculer les qte 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 qte 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

J’espère que cela est un peu plus claire.....
Jiibax
Sous Expert(e)
Sous Expert(e)
 
Messages: 52
Inscription: 29 Sep 2010 16:02
 

Re: SQL

Message le 08 Avr 2011 17:19

La ref de la table B est bien une clé étrangère qui représente la table A ?

Si oui, avec un CASE WHEN tu devrais pouvoir arriver à tes fins...
En cas de problème constaté sur un sujet, contactez un modérateur par MP. N'intervenez pas vous-même. Merci bien.
Aucune aide ni support ne sera fourni par MP.
Avatar de l'utilisateur
H3bus
Moderateur
Moderateur
 
Messages: 12195
Inscription: 08 Avr 2008 15:13
Localisation: /home/h3bus
 

Re: SQL

Message le 11 Avr 2011 13:33

C'est tout bon j'ai réussi à trouver ce que je cherchais avec un IF et ça fonctionne très bien pour ce que je voulais faire :D
J'avais pas tester avec le IF car une personnes m'avait di que sql ne gérait pas le test IF

Des que je peux je vous métrais la requête sql !

Merci d'avance.
Jiibax
Sous Expert(e)
Sous Expert(e)
 
Messages: 52
Inscription: 29 Sep 2010 16:02
 

Re: SQL

Message le 11 Avr 2011 16:52

Voila la requête que j'utilise :

Code: Tout sélectionner
SELECT
Compte,
SUM(QtA) AS TQA,
SUM(ROUND((PAA),2)) AS TPAA,
SUM(ROUND((PVA),2)) AS TPVA,
SUM(QtB) AS TQB,
SUM(ROUND((PAB),2)) AS TPAB,
SUM(ROUND((PVB),2)) AS TPVB
 FROM
( SELECT
Compte,
IF(TableA.`Ref` = TableB.`Ref`,TableA.`Qte`,NULL) AS QtA,
IF(TableA.`Ref` = TableB.`Ref`, TableA.`Qte`*TableA.`PA`,NULL) AS PAA,
IF(TableA.`Ref` = TableB.`Ref`, TableA.`Qte`*TableAe.`PV`,NULL) AS PVA,
IF(TableA.`Ref` = TableB.Ref,NULL,TableA.Qte) AS QtB,
IF(TableA.`Ref` = TableB.`Ref`,NULL, TableA.`Qte`*TableA.`PA`) AS PAB,
IF(TableA.`Ref` = TableB.`Ref`,NULL, TableA.`Qte`*EiffageLigne.`PV`) AS PVB
FROM TableA
LEFT JOIN CatEif ON TableB.Ref = TableA.Ref
) as test
 GROUP BY Compte
Jiibax
Sous Expert(e)
Sous Expert(e)
 
Messages: 52
Inscription: 29 Sep 2010 16:02
 


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


.: Nous contacter :: Flux RSS :: Données personnelles :.