| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 12 octobre 2017 - 21:15 |
Bonjour
Mon problème : Je voudrais faire une requête avec une jointure sur 2 tables avec tous les enregistrements d'une table et seulement ceux de l'autre table pour les enregistrements égaux. Voici mon code SQL généré :
SELECT SUM(Ecritures.Recette) AS la_somme_Recette, SUM(Ecritures.Dépense) AS la_somme_Dépense, SUM(Ecritures.Recette -Ecritures.Dépense) AS Solde, Num_compte.Libellé AS Libellé, Ecritures.Compte AS Compte FROM Num_compte, Ecritures WHERE Num_compte.Numéro_de_compte = Ecritures.Numéro_de_compte AND ( Ecritures.Date_Ecriture BETWEEN {ParamDateDébut} AND {ParamDateFin} ) GROUP BY Num_compte.Libellé, Ecritures.Compte Et là j'ai tous les enregistrements des 2 tables Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 12 octobre 2017 - 21:50 |
J'ai oublié de préciser le liens entre les 2 tables : Table Num_Compte 0,1 vers la table Ecritures 1,1. Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 571 messages Popularité : +222 (260 votes) |
|
Posté le 13 octobre 2017 - 05:01 |
Bonjour,
Tu as tous les enregistrements de la table Num_Compte alors que tu n'as pas d'enregistrements dans la table Ecritures ?
Essaye comme ça.
SELECT SUM(Ecritures.Recette) AS la_somme_Recette, SUM(Ecritures.Dépense) AS la_somme_Dépense, SUM(Ecritures.Recette -Ecritures.Dépense) AS Solde, Num_compte.Libellé AS Libellé, Ecritures.Compte AS Compte FROM Ecritures, Num_compte WHERE Ecritures.Numéro_de_compte = Num_compte.Numéro_de_compte AND ( Ecritures.Date_Ecriture BETWEEN {ParamDateDébut} AND {ParamDateFin} ) GROUP BY Num_compte.Libellé, Ecritures.Compte
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 13 octobre 2017 - 08:23 |
Merci
Mais rien de changer |
| |
| |
| | | |
|
| | |
| |
Posté le 13 octobre 2017 - 08:34 |
bonjour
au lieu de faire WHERE Num_compte.Numéro_de_compte = Ecritures.Numéro_de_compte
regarde en sql inner join
et dans ton cas left join |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 13 octobre 2017 - 09:30 |
J'ai avancé je n'ai plus TOUS les enregistrements de la table Num_Compte, mais je n'ai QUE la somme du 1er enregistrement trouvé. Voici mon nouveau code :
SELECT Ecritures.Numéro_de_compte AS Numéro_de_compte, SUM(Ecritures.Recette) AS la_somme_Recette, SUM(Ecritures.Dépense) AS la_somme_Dépense, SUM(( Ecritures.Recette - Ecritures.Dépense ) ) AS Solde, Num_compte.Libellé AS Libellé FROM Num_compte, Ecritures WHERE Num_compte.Numéro_de_compte = Ecritures.Numéro_de_compte AND ( Ecritures.Date_Ecriture BETWEEN {ParamDateDébut} AND {ParamDateFin} ) GROUP BY Num_compte.Libellé, Ecritures.Numéro_de_compte ORDER BY Numéro_de_compte ASC Merci pour votre aideMessage modifié, 13 octobre 2017 - 09:43 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 13 octobre 2017 - 09:32 |
En fait il ne faudrait pas de regroupement sur le libellé mais seulement sur le champ "Ecritures.Numéro"_de_compte. Ce que je n'arrive pas à faire. En retirant le champ "Ecritures.Numéro" le regroupement se fait bien.Message modifié, 13 octobre 2017 - 09:42 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 571 messages Popularité : +222 (260 votes) |
|
Posté le 13 octobre 2017 - 11:55 |
Ce n'est pas possible ou alors il te faut retirer le libellé de ta requête. Cependant pour pouvoir t'aider plus, il faudrait un échantillon de ce que tu obtiens et de ce que tu voudrais avoir
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Posté le 13 octobre 2017 - 12:53 |
bonjour
vous utilisez where Num_compte.Numéro_de_compte = Ecritures.Numéro_de_compte
pour la jointure au lieux de inner join
il faut regarder du cote de left join en sql pour avoir tout les enregistrements d'une table et ceux de l'autre table |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 15 octobre 2017 - 07:59 |
Merci Philippe
En fait j'ai retiré le Numéro de compte, c'est le libellé qui est le plus important |
| |
| |
| | | |
|
| | |
| |
Posté le 16 octobre 2017 - 13:36 |
ET comme cela? SELECT SUM(Ecritures.Recette) AS la_somme_Recette, SUM(Ecritures.Dépense) AS la_somme_Dépense, SUM(Ecritures.Recette -Ecritures.Dépense) AS Solde, Num_compte.Libellé AS Libellé, Ecritures.Compte AS Compte FROM Num_compte left Join Ecritures ON
(Num_compte.Numéro_de_compte = Ecritures.Numéro_de_compte AND ( Ecritures.Date_Ecriture BETWEEN {ParamDateDébut} AND {ParamDateFin} )) GROUP BY Num_compte.Libellé, Ecritures.Compte
Michel Lahellec, Montreal. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 18 octobre 2017 - 21:04 |
Merci Michel Lahellec J'ai joint sur le fichier de droite et cela fonctionne |
| |
| |
| | | |
|
| | |
| |
Posté le 19 octobre 2017 - 13:13 |
Tant mieux. On oublie souvent que la condition de jointure peut être autre chose qu'une simple égalité.
Michel Lahellec, Montréal |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 86 messages Popularité : +3 (3 votes) |
|
Posté le 19 octobre 2017 - 14:37 |
Une autre façon de faire : Mettre la rubrique dans la "liste des éléments de votre requete" mais la déclarer "pas visible" |
| |
| |
| | | |
|
| | |