Jointure spéciale

madflo Messages postés 47 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 24 juin 2013 - 26 juin 2007 à 16:17
cs_chup Messages postés 21 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 - 26 juil. 2007 à 13:47
Imaginez deux tables :
Table1 ( Id_Tbl1 , Mtt_Tbl1 , #Id_Tbl2)
Table2 ( Id_Tbl2 , Mtt_Tbl2)

Exemple :
Table 1
A   50   K
B   60   L
C   100 S
D   30   S

Table 2
K   50
L   20
S   30
V   30
Z   21

Nous souhaitons obtenir le résultat : 240 | 100

Ceci s'obtient en faisant la somme de Table1 et d'ajouter la somme des Table2 rattaché. Mais dans notre exemple S de table2 est lié deux fois et risque de s'additionner deux fois si l'on croit réussir par une requete simple. Si vous avez des idées ou besoin de plus d'informations pour m'aider je suis là.

Merci d'avance si vous vous donnez au moins la peine de lire ce message ;).

3 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 26
26 juin 2007 à 21:28
 Bonsoir à tous,

Bonsoir madflo,

Outrepassons le thème dans lequel la question a été posée.
En passant par des tableaux, on peut obtenir:

' Table 1
' A   50   K
' B   60   L
' C   100  S
' D   30   S

' Table 2
' K   50
' L   20
' S   30
' V   30
' Z   21

Dim Table1(3)
Table1(0) = Array("A",50,"K")
Table1(1) = Array("B",60,"L")
Table1(2) = Array("C",100,"S")
Table1(3) = Array("D",30,"S")
Dim Table2(4)
Table2(0) = Array("K",50)
Table2(1) = Array("L",20)
Table2(2) = Array("S",30)
Table2(3) = Array("V",30)
Table2(4) = Array("Z",21)

For i=0 To UBound(Table1)
    MsgBox Table1(i)(0) &vbTab& Table1(i)(1) &vbTab& Table1(i)(2)

    Total_Table1 = Total_Table1 + Table1(i)(1)
    If i=UBound(Table1) Then MsgBox Total_Table1,,"Total_Table1"
Next

For j=0 To UBound(Table2)
    MsgBox Table2(j)(0) &vbTab& Table2(j)(1)
Next

Ma contribution s'arrête là !!!
En utilisant filter, dictionary ou autres algos, ce topic devrait évoluer favorablement.

jean-marc
0
madflo Messages postés 47 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 24 juin 2013
27 juin 2007 à 09:44
Non hélas ce n'est pas si simple. Je parle de requête sql :/. Sinon j'ai déjà fait plusieurs codes qui font le traitement via le code mais ce n'est pas dans la charte de codage de mon boulot. J'aurais dû poster dans SQL. Je vais le copier là-bas désolé.
0
cs_chup Messages postés 21 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 13:47
Salut,

tu peux essayer ça :

SELECT SUM(Mtt_Tbl1), (SELECT SUM(Mtt_Tbl2) FROM Table2 WHERE Id_Tbl2 IN (SELECT Id_Tbl2 FROM Table1))
FROM Table1

Nicolas
0