Jointure entre 2 tables

Signaler
Messages postés
12
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
4 mars 2013
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Bonjour ,
J'ai un probléme de jointure entre 2 tables

table ventes ( code_sp int ,nom varchar(50),montant float , Quantite float ,code_client int ) // sans clef primaire
table clients (code_sp int , code_client int ,nom_client,date) // sans clef primaire aussi

j'aimerai faire une jointure pour ajouter des champs de la table clients à la table ventes sachant que ventes.code_sp et clients.code_sp sont identiques

le résultat souhaité est :
---------------------------------------------------------------
select sum(ventes.Quantite),clients.code_sp,clients.nom_client,client.date,
ventes.montant from ventes right join clients on ventes.code_sp =clients.code_sp )
group by clients.code_sp,clients.nom_client,client.date,ventes.montant
---------------------------------------------------------------
NB: j'ai éssaié inner join , right join , left join mais j'ai pas le résultat souhaité Quand je fais
select sum(Quantite) from ventes ça me donne un chiffre X
mais avec la requéte antérieure ça me donne un autre chiffre Y pour le sum(Quantite)

Merci de votre aide

3 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

exécutes ça sur sql-server :
(si tu sommes les qte il faut aussi sommer les montants !!!)
(la date ne sert a rien)
(le right join non plus)

declare @ventes table( code_sp int ,nom varchar(50),montant float , Quantite float ,code_client int);
declare @clients  table(code_sp int , code_client int ,nom_client varchar(35),date datetime) ;
/*3 clients de test*/
insert into @clients values(1, 1, 'client1', getdate()-1);
insert into @clients values(2, 2, 'client2', getdate());
insert into @clients values(3, 3, 'client3', getdate()+1);
/*quelques ventes*/
insert into @ventes values(1, 'vente1_cli1', 10, 1, 1)
insert into @ventes values(1, 'vente2_cli1', 5, 1, 1)
insert into @ventes values(2, 'vente1_cli2', 100, 2, 2)
insert into @ventes values(2, 'vente2_cli2', 15, 10, 2)
insert into @ventes values(3, 'vente1_cli3', 50, 5, 3)

select 
COUNT_VENTE = count(ventes.code_sp),
SUM_QTE = sum(ventes.Quantite),
CODE = clients.code_sp,
NOMCLIENT = clients.nom_client,
--DATE = convert(varchar,clients.date,103), /*NE SERT A RIEN !*/
MONTANT = sum(ventes.montant) 
from @ventes ventes
inner join @clients clients on ventes.code_sp = clients.code_sp 
group by 
clients.code_sp,
clients.nom_client--,
--convert(varchar,clients.date,103) /*NE SERT A RIEN !*/


bye...
Messages postés
12
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
4 mars 2013
3
Slt
Problème non résolu
j'ai ressayé cette solution mais toujours le même problème
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Re,

avec les données de test ci-dessus, ça marche bien pour moi.

Si tu groupes comme il faut les champs somme et count, il n'y a pas de raison d'avoir de mauvais résultats.

tu as du rajouté des champs dans le select....

bye...