SQL SERVER: Quelqu'un peut m'aider à interpréter ce code s'

Fermé
manoloo - Modifié le 16 sept. 2022 à 17:07
 Tessel75 - 20 sept. 2022 à 00:00

Bonjour,

INSERT INTO bdd_rawprices1 ( STATION, [TYPE CONTRAINTE], ARTICLE, [SUBS ARTICLE], COMPETITOR, [COMP PRICE], [SENT PRICE], UGM, UNM, [CASH SALES], [GLOBAL SALES], [ECART MIN], [ECART MAX], [MNU OBJECTIVE] )
SELECT ExportMBU_MNU.STATION, [Extraction CTR Source-TMA].[TYPE CONTRAINTE], [Extraction CTR Source-TMA].ARTICLE, [Extraction CTR Source-TMA].[SUBS ARTICLE], "MAX" AS COMPETITEUR, Min(ExportMBU_MNU.[COMP PRICE]) AS [MinDeCOMP PRICE], Min(ExportMBU_MNU.[SENT PRICE]) AS [MinDeSENT PRICE], Min(ExportMBU_MNU.UGM) AS MinDeUGM, Min(ExportMBU_MNU.UNM) AS MinDeUNM, Min(ExportMBU_MNU.[CASH SALES]) AS [MinDeCASH SALES], Min(ExportMBU_MNU.[GLOBAL SALES]) AS [MinDeGLOBAL SALES], Avg([Extraction CTR Source-TMA].[ECART MIN]) AS [MoyenneDeECART MIN], Avg([Extraction CTR Source-TMA].[ECART MAX]) AS [MoyenneDeECART MAX], Avg([Extraction CTR Source-TMA].[MNU OBJECTIVE]) AS [MoyenneDeMNU OBJECTIVE]
FROM [Extraction CTR Source-TMA] INNER JOIN ExportMBU_MNU ON ([Extraction CTR Source-TMA].[SUBS ARTICLE] = ExportMBU_MNU.GRADE) AND ([Extraction CTR Source-TMA].COMPETITOR = ExportMBU_MNU.COMPETITOR) AND ([Extraction CTR Source-TMA].STATION = ExportMBU_MNU.STATION)
GROUP BY ExportMBU_MNU.STATION, [Extraction CTR Source-TMA].[TYPE CONTRAINTE], [Extraction CTR Source-TMA].ARTICLE, [Extraction CTR Source-TMA].[SUBS ARTICLE], "MAX", IIf([Extraction CTR Source-TMA]![ARTICLE]=[Extraction CTR Source-TMA]![SUBS ARTICLE],1,0)
HAVING ((([Extraction CTR Source-TMA].[TYPE CONTRAINTE])="0005_MAX") AND (([Extraction CTR Source-TMA].ARTICLE)<>20312) AND ((Min(ExportMBU_MNU.[CASH SALES]))>0) AND ((IIf([Extraction CTR Source-TMA]![ARTICLE]=[Extraction CTR Source-TMA]![SUBS ARTICLE],1,0))=1));



Windows / Edge 105.0.1343.33

A voir également:

5 réponses

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 16 sept. 2022 à 16:00

Bonjour,

Quand tu postes du code merci d'utiliser les balises de code :

https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

-

Concernant ta demande, ce code ajoute des nouvelles lignes dans la table "bdd_rawprices1"



0

Aah d’accord je suis désolé je ne savais pas, et merci pour ta réponse. C’est le calcul de des 3 dernières lignes que je ne comprends pas , je sais très bien qu’elle ajoute les lignes dans une table 

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 16 sept. 2022 à 17:05

Mais encore ...

Je suppose que tu sais ce qu'est un HAVING et un AND, donc quelle est la partie dans ces 3 dernières lignes qui te pose problème ?

Quand on vient sur un forum demander de l'aide il faut faire un minimum d'effort et être capable de décrire précisément le problème et son contexte.

0
Manoloo > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
18 sept. 2022 à 18:01

Je ne comprends pas ce que le Group By fait. En gros les deux derniers lignes 

0

Je ne comprends pas le inner join 

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > Manoloo
Modifié le 18 sept. 2022 à 17:51

Il s'agit d'une jointure portant sur 2 tables : [Extraction CTR Source-TMA] et [ExportMBU_MNU]

Cette requête SELECT renvoie les lignes répondants parfaitement aux 3 conditions spécifiées dans le ON

0
Manoloo > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
18 sept. 2022 à 18:11

Je ne comprends pas ce que le Group By fait et le Having En gros le calcul qui a été fait sur les deux dernières lignes.

0

Bonsoir,

Quand tu ne comprends pas une telle suite de conditions le mieux de séparer toutes les conditions une par une, et après de les lire une à une. C'est la méthode que je peut te donner; après je te laisse la lecture elle-même parce que tu connais tes tables et tes champs.

Ci-dessous la lecture que je peux te proposer  ==>

"GROUP BY
ExportMBU_MNU.STATION,
[Extraction CTR Source-TMA].[TYPE CONTRAINTE],
[Extraction CTR Source-TMA].ARTICLE, [Extraction CTR Source-TMA].[SUBS ARTICLE],
"MAX",
IIf([Extraction CTR Source-TMA]![ARTICLE]=[Extraction CTR Source-TMA]![SUBS ARTICLE],1,0)

HAVING
((([Extraction CTR Source-TMA].[TYPE CONTRAINTE])="0005_MAX") AND
(([Extraction CTR Source-TMA].ARTICLE)<>20312) AND
((Min(ExportMBU_MNU.[CASH SALES]))>0) AND
((IIf([Extraction CTR Source-TMA]![ARTICLE]=[Extraction CTR Source-TMA]![SUBS ARTICLE],1,0))=1));
"

0

Quand je demande de l’aide c’est bel et bien parce que je ne comprends pas. Je suis novice

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

OK, reprenons !

Tu as à faire à une requête-calcul, qui opère des calculs sur certaines données, (des sommes, des extractions, des calculs de max ou de min, etc.), quand les autres données sont celles qui sont sélectionnées pour être les données sur lesquelles seront faites les calculs et selon tel ou tel critère de sélection. C'est ce à quoi correspondent "Group by" et les "Having".

Par exemple si tu as une table de données d'une population avec la taille, le poids, l'age, etc, et le sexe, et que tu veuilles savoir combien d'hommes mesurent plus de 1,80m et pèsent moins de 80kg, tu auras une requête du genre :

"select count ([Population].[individus]) group by [Population].[Sexe] having  [Population].[Sexe] = "h", and    [Population].[Poids]< 80   and   [Population].[taille] > 180 "

Pour être plus explicite, dit en français, ça donnerait une expression du genre:

"Sélectionner le comptage des individus, regroupés par [Population].[Sexe], ayant (les critères de sélection), [Population].[Sexe]= 'h'   et   [Population].[Poids]< 80 et    [Population].[taille] > 180 "

0