Plusieurs JOINTURE INTERNE avec GROUP BY et d'une Fonction d'Agrégation
Je suis de retour avec une autre question. J'ai été bricoler avec ce pour 1 jours et demi maintenant, et toujours pas de chance. Donc, j'ai les tableaux ci-dessous.
Table1
Field1 Field2 Field3 Field4 Field5
DR1 500 ID1 Active TR1
DR2 250 ID2 Active TR1
DR3 100 ID1 Active TR1
DR4 50 ID3 Active TR1
DR5 50 ID1 Cancelled TR1
DR6 150 ID1 Active TR2
Table2
Field1 Field3
ID1 Chris
ID2 John
ID3 Jane
Table3
Field1 Field2
TR1 Shipped
TR2 Pending
Je peut actuellement atteindre ce résultat.
Name Total
Chris 650 3
John 250 1
Jane 50 1
à l'aide de cette instruction sql
SELECT t2.Field3 as Name , SUM(t1.Field2) as Total
FROM [Table1] t1 INNER JOIN [Table2] t2 ON t1.Field3 = t2.Field1
GROUP BY t2.Field3
Cependant, j'aimerais arriver à ce résultat indiqué ci-dessous.
Chris 600 2
John 250 1
Jane 50 1
Je tiens à le consulter Tableau3 d'abord si elle a un "Expédiée" Field2 puis il comprend tout dans Table1 avec "Active" Field4. Il ne devrait pas inclure "Annulé" Field4. Et si Tableau3 a un Champ2 de l'Attente, il convient également de ne pas l'inclure. J'apprécierais toute peu d'aide. Merci.
- Vous manquez quelque chose d'informations. Qu'est-ce que "le 3-1-1" ? Dans votre vous sélectionnez la requête à seulement 2 champs (nom et somme). Qu'est-ce que 650? par chris: 500+100+50+150 = 800
- Vous pouvez simplement ajouter ces conditions à votre demande: OÙ Table1.Field5 = 'TR1' ET de Table1.Field4 = "Active", bien sûr, avant d'instruction GROUP BY
- Oh désolé, le 3-1-1 est COUNT(*). @BaBL86
- oui, c'est la façon de le faire, cependant je ne peux pas faire une condition, à moins que je me connecter Tableau3 à Table1 d'abord en faisant une JOINTURE INTERNE, et maintenant il est déjà à l'aide de 1 INNER JOIN pour Table2. Je ne sais pas où mettre le 2ème JOINTURE INTERNE pour Tableau3
Vous devez vous connecter pour publier un commentaire.
Bien, vous avez juste besoin d'adhérer à toutes les tables nécessaires pour avoir les champs nécessaires dans la clause where.
Et ajouter un
where
clause.voir SqlFiddle
MODIFIER
Pour votre problème
Avec "bizarre accès de la syntaxe de jointure"