|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 149 ![]() |
Bonjour,
Voilà mon cas: Tab1 ----------- Tab2 N°---------------N° Montant=10------ Montant=2 ----------------- Montant=6 ----------------- Montant=5 ----------------- Montant=4 ----------------- Montant=20 ----------------- Montant=1 ----------------- etc.... Est-il possible de faire une requête qui me donne toutes les combinaisons de la Tab2 dont le résultat est égal à 10 (Montant=10 de Tab1) Merci de votre concours Gentoo |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour Gentoo,
Désolé, mais peux-tu être plus clair dans ton exposé ? Quels champs ont tes tables 1 et 2 : N°, montant, les 2 ? sur quelle colonne souhaites-tu effectuer ta jointure ? montant? Quelles colonness souhaites-tu faire apparaitre ? le N° ? Donnes nous un exemple plus détaillé de chacune des tables
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 149 ![]() |
Oui, désolé, je n'ai pas été assez précis.
Champs des tables 1 et 2 : N°, montant, Jointure par "N°" 3 Colonnes de résultat: "N°" "MontantTab1" "SommeDeMontantTab2=MontantTab1" Dites moi si je suis clair... Merci |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bon, je crois il y a besoins de certains éclaircissements.
En fait, tu souhaites sortir les n° dans la table 1 dont les montant soient égaux à la somme des montants dans la table 2. Ce n'est pas suffisant, car le SQL n'est pas capable de déterminer sur quel enregisgtrement effectuer la sommation, si on ne lui précise pas. En effet, les opération de sommations ne sont possibles que sur des fonctions de regroupement sur des objets logiques (ici, tes colonnes de ta table) Dans ton exemple, tu as dans ta table1 un montant de 10. Tu souhaites donc obtenir les n°s dans la table 2 dont la somme des montants est égale à 10. Or du vois qu'il peut y avoir plusieurs combinaisons : 10 = 6 + 4 = 5 + 4 + 1, etc. il te faut donc au minimum, pour faire une sommation, utiliser une fonction de regroupement, sur les n°s dans la table 2 par exemple. voici par ex. une comparaison pertinente : Table 1 N°; montant 1;5 2,10 3;8 4;20 Table 2 N°; montant 10;2 15;6 10;5 15;4 12;20 10;1 si on fait un regroupement dans la table 2 par N° on aurait : N°; montant 10;8 15;10 12;20 que l'on pourrait comparer avec la table 1. On aurait alors la correspondance : Table1.n°;Table2.n°;montant 2;10;8 3;15;10 4;12;20 Est-ce cela que tu recherches ?
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 149 ![]() |
Je te remercie Dumas.blr de t'être penché sur mon problème, mais j'avoue que je me suis peut-être noyé.
Je vais prendre un exemple plus concret: J'ai un fournisseur: "Durandal" J'ai une facture de 100€ au nom de "Durandal" J'ai plusieurs livraisons d'articles: 110€ 50€ 60€ 40€ 20€ 10€ La question est de pouvoir me retourner toutes les combinaisons possibles dont la somme est égale à 100€ La jointure est le Fournisseur. Si une requête existe elle devrait commencée par isoler tout les montants inférieurs à 100€ Les combinaisons possibles sont à vu d'oeil (50€;40€;10€) (60€;40€) Une requête peut elle trouver ces combinaison? Mille excuses pour mes tentatives d'explication. Gentoo |
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
D'accords,
En fait, tu cherche retrouver des lignes de factures à partir d'un total facture, mais tu n'as pas le numéro de facture ... Désolé, mais là, le SQL ne pourra t'être d'aucune aide, car il ne fait pas d'intelligence artificielle (!!!) Sans faire d'humour, te rends-tu compte de la complexités des problèmes que cela induit ? - sur combien d'élément doit on faire un calcul : 1? 2? 3? plus ? - quels sont les critères logiques de regroupement ? dois-je additionner des choux et des carottes ? Même sans utiliser le SQL, tu te rends compte que si tu devais le faire manuellement, tu serais obligé toi-même d'opérer des choix complexe (du type : qu'est ce qui me permet de rapprocher ce montant avec cet autre montant ? Une date de facture, un numéro de fournisseur ? etc.) il te faudra passer par un programme avec un algorithme complexe pour le faire. Le SQL ne pourra t'aider dans un premier temps a opérer des sélections sur ta population en fonction des choix que tu lui indiques. Dans un deuxième temps, il te faudra un programme, qui calcule toutes les combinaisons d'un tableau de x éléments, c'est à dire avec x! combinaisons possibles. Ca, tu pourras le faire, mais pas en SQL.
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 149 ![]() |
Merci Duma,
Je ne suis pas très calé en informatique, mais j'ai déjà fait des boucles. Si ce n'est pas possible en SQL, je vais m'orienter vers une extraction par sql ( montant < 100€ pour "Durandal") puis faire une boucle par combinaison. ça me prendra du temps mais ça me passionne déjà. merci de ton concours,
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com