Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2011, 10h40   #1
Invité de passage
 
Homme
Étudiant
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut Débutant Adaptation Requête à Excel

Bonjour à toutes et a tous!

Voici mon premier post sur ce forum. Je m'en suis souvent servi pour mes petits soucis de VBA et je tenais à vous remercier pour l'aide apportée aux gens qui essayent de progresser en la matière.

La j'ai un vrai gros souci, j'ai rencontré quelqu'un qui m'a écrit une requête pour faire une historisation dans Excel. Le problème est qu'il n'a pas eu le temps de me dire comment l'adapter à excel et encore moins la mettre en place.

C'est pour cela que je viens vers vous. Vous trouverez dans mon fichier excel ci-joint trois états (mars avril mai) de la même feuille avec des changements listés sur un onglet "changement"

La SQL a été écrite sur la base de cet exemple.

En fin de tableau j'ai créé des clés utilisées dans la requête voici la requête et son explication

Voici une requête union (qui réunit 3 requêtes en une seule) pour faire apparaître les changements d’un mois M et d’un mois M-1
Cette requête retourne 1 seule ligne par changement effectif. Par exemple les quatre lignes du mois de mars disparues en avril et qui sont identiques, n’en feront en fait, qu’une seule. (cf PJ)

Les deux premières requêtes (ajout et suppression) compare les iRules Descriptions en s’appuyant sur les Brand Familly C et une relation de 1 à plusieurs sur iRule Description.
Elles sont identiques (à un poil près) à part que M devient M-1 et M-1 devient M

La troisème ne fait qu’une comparaison textuelles sur iRuleDescription en s’appuyant sur une relation de 1 à plusieurs sur CLEE
Pour que la modification soit prise en compte, il faut que la clef soit la même dans M et M-1 mais le iRule description soit différent.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
----------------------------------------Texte de la requête
SELECT M.CLEE, M.[iRule Description], "added" AS State, DateAdd("m",-1,[M].[DateH]) AS [Date of CHANGE]
FROM MAI AS M LEFT JOIN AVRIL AS [M-1] ON M.[iRule Description] = [M-1].[iRule Description]
GROUP BY M.CLEE, M.[Brand Family C], M.[iRule Description], [M-1].[iRule Description], "added", DateAdd("m",-1,[M].[DateH])
HAVING ((([M-1].[iRule Description]) IS NULL))
UNION
SELECT [M-1].CLEE, [M-1].[iRule Description], "deleted " AS State, DateAdd("m",1,[M-1].[DateH]) AS [Date of CHANGE]
FROM MARS AS [M-1] LEFT JOIN AVRIL AS M ON [M-1].[iRule Description] = M.[iRule Description]
GROUP BY [M-1].CLEE, [M-1].[iRule Description], "deleted ", DateAdd("m",1,[M-1].[DateH]), [M-1].[Brand Family C], M.[iRule Description]
HAVING (((M.[iRule Description]) IS NULL))
UNION
SELECT [M-1].CLEE, [M-1].[iRule Description], "modified " AS State, [M-1].DateH AS [Date of CHANGE]
FROM MARS AS [M-1] LEFT JOIN AVRIL AS M ON [M-1].CLEE = M.CLEE
GROUP BY [M-1].CLEE, [M-1].[iRule Description], "Modified ", [M-1].DateH, M.[iRule Description], M.CLEE
HAVING (((M.[iRule Description])<>[M-1].[iRule Description]));
Voila alors si cela parle à quelqu'un ça serait vraiment génial parce que je suis vraiment bloqué bloqué !

Merci d'avance pour ceux qui se pencheront sur mon cas!! :0

Saimon

PS: quant à la mise en place, c'est un autre problème !!
Fichiers attachés
Type de fichier : zip Hisorisation_FX_EXEMPLE.zip (9,9 Ko, 1 affichages)
Saimon69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 12h30   #2
Invité de passage
 
Homme
Étudiant
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut Etape 1 du probleme

En fait, dans un premier temps j'aimerai savoir s'il n'y a pas d'erreur dans la synthaxe.
Ensuite j'aimerai connaitre le moyen de la tester dans excel. Je viens de lire qu'il faut remplacer les noms de tables (ex: MAI) par le nom de de feuille de la maniere suivante:

[MAI$]


Je n'ai jamais utilise les SQL et je suis completement perdu...je continue mes recherches en esperant qu'une ame charitable et un esprit formidable passe pas la...

Merci d'avance!

Saimon
Saimon69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h32   #3
Invité de passage
 
Homme
Étudiant
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut Solution!! :)

Re a tous et a toutes,

J'ai reussi voici donc la solution, je sais c'etait tout bete...mais bon!!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL = "SELECT M.CLEE, M.[iRule Description], 'added' AS State, DateAdd('m',-1,[M].[DateH]) AS [Date of change] " & _
      "FROM [MAI$] AS M LEFT JOIN [AVRIL$] AS [M-1] ON M.[iRule Description] = [M-1].[iRule Description] " & _
      "GROUP BY M.CLEE, M.[Brand Family C], M.[iRule Description], [M-1].[iRule Description], 'added', DateAdd('m',-1,[M].[DateH]) " & _
      "HAVING ((([M-1].[iRule Description]) Is Null)) " & _
      "Union " & _
      "SELECT [M-1].CLEE, [M-1].[iRule Description], 'deleted' AS State, DateAdd('m',1,[M-1].[DateH]) AS [Date of change] " & _
      "FROM [MARS$] AS [M-1] LEFT JOIN [AVRIL$] AS M ON [M-1].[iRule Description] = M.[iRule Description] " & _
      "GROUP BY [M-1].CLEE, [M-1].[iRule Description], 'deleted', DateAdd('m',1,[M-1].[DateH]), [M-1].[Brand Family C], M.[iRule Description] " & _
      "HAVING (((M.[iRule Description]) Is Null)) " & _
      "Union " & _
      "SELECT [M-1].CLEE, [M-1].[iRule Description], 'modified' AS State, [M-1].DateH AS [Date of change] " & _
      "FROM [MARS$] AS [M-1] LEFT JOIN [AVRIL$] AS M ON [M-1].CLEE = M.CLEE " & _
      "GROUP BY [M-1].CLEE, [M-1].[iRule Description], 'Modified', [M-1].DateH, M.[iRule Description], M.CLEE " & _
      "HAVING (((M.[iRule Description])<>[M-1].[iRule Description]));"
Merci a ceux qui auraient tenter de m'aider!

Saimon
Saimon69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h07.


 
 
 
 
Partenaires

Hébergement Web