Jointure entre 2 tables

farfarawi Messages postés 12 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 4 mars 2013 - 27 févr. 2013 à 17:54
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 4 mars 2013 à 19:52
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

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
27 févr. 2013 à 20:35
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...
0
farfarawi Messages postés 12 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 4 mars 2013 3
4 mars 2013 à 15:26
Slt
Problème non résolu
j'ai ressayé cette solution mais toujours le même problème
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
4 mars 2013 à 19:52
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...
0
Rejoignez-nous