Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Group By does not return right result with multiple tabl
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 8 SP1
Database:
Visual FoxPro
Divers
Thread ID:
01186807
Message ID:
01186980
Vues:
48
This is the solution that I was trying to avoid:

SELECT crsTest.Fld1, SUM(crsTest1.Amount) AS Amount1, 0000000000.00 AS Amount2;
FROM crsTest;
INNER JOIN crsTest1 ON crsTest.Fld1 = crsTest1.Fld1;
GROUP BY 1;
UNION ;
SELECT crsTest.Fld1, 0000000000.00 AS Amount1, SUM(crsTest2.Amount) AS Amount2;
FROM crsTest;
INNER JOIN crsTest2 ON crsTest.Fld1 = crsTest2.Fld1;
GROUP BY 1;
ORDER BY 1 ;
INTO CURSOR crsResult

SELECT Fld1, SUM(Amount1) AS Amount1, SUM(Amount2) AS Amount2;
GROUP BY 1;
FROM crsResult

Thanks.

>You got exactly what you ask for :-)
>The doubled result in the result is because the recordset looks like this (Lets change the second 10 in the crsTest1 to 11):
>
>Fld1     Test1.Ammount   Test2.Ammount
>---------------------------------------
>1            10                100
>1            11                100
>
>You got as many records as the largest number of records in all tables. In VFP9 you could use derived tables to got the result you want, I am not sure about VFP8 (can't test it right now).
>Here VFP9 query:
>
>SELECT crsTest.Fld1, cTest1.Amnt AS Ammount1, cTest2.Amnt AS Ammount2;
>       FROM crsTest;
>INNER JOIN (SELECT Fld1, SUM(Ammount) AS Amnt;
>                   FROM crsTest1;
>                   GROUP BY Fld1) cTest1;
>ON crsTest.Fld1 = cTest1.Fld1;
>INNER JOIN (SELECT Fld1, SUM(Ammount) AS Amnt;
>                   FROM crsTest2;
>                   GROUP BY Fld1) cTest2;
>ON crsTest.Fld1 = cTest2.Fld1
>
>
>If this didn't works in VFP8, you could first query second two tables and then join the results to main one.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform