Requête SQL sur Editions Pilotées
Modérateurs: Super-Apogea, Super Modérateur
9 messages
|Page 1 sur 1
Requête SQL sur Editions Pilotées
Bonjour,
J'ai besoin de faire une requête SQL dans les Editions Pilotées de Sage Gestion Commerciale qui me permettrait de rentrer dans 3 niveaux de Nomenclatures dans une base "Articles".
1er Niveau est mon article
2ème Niveau est la nomenclature de cet article
3ème Niveau est la sous-nomenclature de la nomenclature de cet article.
Je sais descendre au 2ème niveau mais pas au 3ème.
Quelqu'un a t'il la requête SQL qui va bien ?
Bien à vous !
Thierry
J'ai besoin de faire une requête SQL dans les Editions Pilotées de Sage Gestion Commerciale qui me permettrait de rentrer dans 3 niveaux de Nomenclatures dans une base "Articles".
1er Niveau est mon article
2ème Niveau est la nomenclature de cet article
3ème Niveau est la sous-nomenclature de la nomenclature de cet article.
Je sais descendre au 2ème niveau mais pas au 3ème.
Quelqu'un a t'il la requête SQL qui va bien ?
Bien à vous !
Thierry
Sage 100 Gestion commerciale i7 Pack+ pour SQL Server - v8.12
Sage 100 Entreprise Edition Pilotée 5.1.9
Sage 100 Entreprise Edition Pilotée 5.1.9
Re: Requête SQL sur Editions Pilotées
Bonjour,
Si tu peux montrer ce que tu attends comme résultat et indiquer la requête actuelle ...
Cordialement,
Si tu peux montrer ce que tu attends comme résultat et indiquer la requête actuelle ...
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: Requête SQL sur Editions Pilotées
Voici la requête actuelle (liste des articles et leur nomenclature, avec réf commençant par 'D')
select ar.AR_REF, ar.AR_DESIGN, nm.NO_REFDET, art.AR_DESIGN, nm.NO_Qte
from F_ARTICLE ar
join F_NOMENCLAT nm on ar.AR_REF=nm.AR_REF
join F_ARTICLE art on nm.NO_REFDET=art.AR_REF
where ar.AR_REF LIKE 'D%'
Résultat :
AR.AR_REF | AR.AR_DESIGN | NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE
| NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE
| NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE
J'aimerais avoir un 3ème niveau :
AR.AR_REF | AR.AR_DESIGN | NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE | NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE | NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
select ar.AR_REF, ar.AR_DESIGN, nm.NO_REFDET, art.AR_DESIGN, nm.NO_Qte
from F_ARTICLE ar
join F_NOMENCLAT nm on ar.AR_REF=nm.AR_REF
join F_ARTICLE art on nm.NO_REFDET=art.AR_REF
where ar.AR_REF LIKE 'D%'
Résultat :
AR.AR_REF | AR.AR_DESIGN | NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE
| NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE
| NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE
J'aimerais avoir un 3ème niveau :
AR.AR_REF | AR.AR_DESIGN | NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE | NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NM.NO_REFDET | ART.AR_DESIGN | NM.NO_QTE | NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
| NOM.NO_REFDET | AT.AR_DESIGN
Sage 100 Gestion commerciale i7 Pack+ pour SQL Server - v8.12
Sage 100 Entreprise Edition Pilotée 5.1.9
Sage 100 Entreprise Edition Pilotée 5.1.9
Re: Requête SQL sur Editions Pilotées
Bonjour,
Si tu veux des nomenclatures à 2 niveaux, il faut rajouter à nouveau F_Nomenclat et F_article et les lier.
Pour mieux voir les jointures, dans le SQL Management Studio, sélectionner le texte de la requête et dans le menu requête, demander Concevoir une requête dans l'éditeur ....
J'espère que c'est ce que tu cherchais à faire.
Cordialement,
Si tu veux des nomenclatures à 2 niveaux, il faut rajouter à nouveau F_Nomenclat et F_article et les lier.
- Code: Tout sélectionner
SELECT ar.AR_Ref AS [Produit Fini], ar.AR_Design AS [Designation PF],
nm.NO_RefDet AS [Composant Niv1], art.AR_Design AS [Nom Composant Niv 1],
nm.NO_Qte AS [Qte Niv1],nm.NO_Type AS [Type N1], nm.NO_Repartition AS [Repartition N1],
NM2.NO_RefDet AS [Composant Niv2],Art2.AR_Design AS [Nom Composant Niv2],
NM2.NO_Qte AS [Qte Niv2], NM2.NO_Type AS [Type N2], NM2.NO_Repartition AS [Repartition N2]
FROM F_ARTICLE AS Art2 INNER JOIN
F_NOMENCLAT AS NM2 ON Art2.AR_Ref = NM2.NO_RefDet RIGHT OUTER JOIN
F_ARTICLE AS ar INNER JOIN
F_NOMENCLAT AS nm ON ar.AR_Ref = nm.AR_Ref INNER JOIN
F_ARTICLE AS art ON nm.NO_RefDet = art.AR_Ref ON NM2.AR_Ref = art.AR_Ref
where ar.AR_REF LIKE 'D%'
Pour mieux voir les jointures, dans le SQL Management Studio, sélectionner le texte de la requête et dans le menu requête, demander Concevoir une requête dans l'éditeur ....
J'espère que c'est ce que tu cherchais à faire.
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: Requête SQL sur Editions Pilotées
Merci pour ton retour asr31, ça fonctionne bien.
Maintenant que le test fonction pour la base Articles, j'ai besoin de le faire pour les réf articles nomenclaturés commençant par "ZECOCONT", facturés depuis le 01/01/2016.
J'ai donc remplacé la base et les données "Articles" par la base et les données "Docligne" et mis un filtre sur mais je plante car la recherche est trop lourde...
Voici mon code :
Peux tu m'aider, stp ?
Maintenant que le test fonction pour la base Articles, j'ai besoin de le faire pour les réf articles nomenclaturés commençant par "ZECOCONT", facturés depuis le 01/01/2016.
J'ai donc remplacé la base et les données "Articles" par la base et les données "Docligne" et mis un filtre sur mais je plante car la recherche est trop lourde...
Voici mon code :
- Code: Tout sélectionner
SELECT
dl.AR_Ref AS [Produit Fini],
dl.DL_Design AS [Designation PF],
nm1.NO_RefDet AS [Composant Niv1],
dl1.DL_Design AS [Nom Composant Niv 1],
nm1.NO_Qte AS [Qte Niv1],
nm1.NO_Type AS [Type N1],
nm1.NO_Repartition AS [Repartition N1],
nm2.NO_RefDet AS [Composant Niv2],
dl2.DL_Design AS [Nom Composant Niv2],
nm2.NO_Qte AS [Qte Niv2],
nm2.NO_Type AS [Type N2],
nm2.NO_Repartition AS [Repartition N2]
FROM F_DOCLIGNE AS dl2 INNER JOIN
F_NOMENCLAT AS nm2 ON dl2.AR_Ref = nm2.NO_RefDet RIGHT OUTER JOIN
F_DOCLIGNE AS dl INNER JOIN
F_NOMENCLAT AS nm1 ON dl.AR_Ref = nm1.AR_Ref INNER JOIN
F_DOCLIGNE AS dl1 ON nm1.NO_RefDet = dl1.AR_Ref ON nm2.AR_Ref = dl1.AR_Ref
WHERE (dl1.AR_Ref LIKE 'ZECOCONT%' OR dl2.AR_Ref LIKE 'ZECOCONT%')
AND (dl.DO_Date>31/12/2016)
AND (dl.DO_Domaine=0 AND dl.DO_Type=7)
Peux tu m'aider, stp ?
Sage 100 Gestion commerciale i7 Pack+ pour SQL Server - v8.12
Sage 100 Entreprise Edition Pilotée 5.1.9
Sage 100 Entreprise Edition Pilotée 5.1.9
Re: Requête SQL sur Editions Pilotées
Bonjour,
Grosso modo,tu veux le même résultat que la première requête mais en limitant les 'produits' finis, ceux vendus, normalement, à ceux dont la référence commence par "ZECOCONT" et facturés sur 2016 ...
Dans ta requête, vu rapidement comme ça, je ne vois pas trop pourquoi il y aurait deux fois F_DOCLIGNE...
je ferais plutôt un truc du genre :
(Attention, je n'ai pas vérifié la syntaxe)
DO_Type=7 pour les factures comptabilisées, de tête..., tu peux faire DO_Type IN (6,7) si nécessaire.
On filtre donc le résultat de la première vue avec tes nouvelles contraintes.
Attention, selon le volume de lignes de document, ça risque aussi d'être un peu long ...
Mais on doit pouvoir optimiser
Cordialement,
Grosso modo,tu veux le même résultat que la première requête mais en limitant les 'produits' finis, ceux vendus, normalement, à ceux dont la référence commence par "ZECOCONT" et facturés sur 2016 ...
Dans ta requête, vu rapidement comme ça, je ne vois pas trop pourquoi il y aurait deux fois F_DOCLIGNE...
je ferais plutôt un truc du genre :
- Code: Tout sélectionner
SELECT * FROM
(<<<la première requête qui semble marcher en modifiant la clause where sur AR_Ref>>>)
WHERE [Produit_Fini] IN
(SELECT DISTINCT AR_Ref FROM F_DOCLIGNE
WHERE YEAR(DO_Date)=2016 AND DO_Type=7 AND AR_Ref LIKE 'ZECOCONT%')
(Attention, je n'ai pas vérifié la syntaxe)
DO_Type=7 pour les factures comptabilisées, de tête..., tu peux faire DO_Type IN (6,7) si nécessaire.
On filtre donc le résultat de la première vue avec tes nouvelles contraintes.
Attention, selon le volume de lignes de document, ça risque aussi d'être un peu long ...
Mais on doit pouvoir optimiser
Cordialement,
ASR31
En recherche de missions.
En recherche de missions.
Re: Requête SQL sur Editions Pilotées
- Code: Tout sélectionner
SELECT
ar.AR_Ref AS [Produit Fini],
ar.AR_Design AS [Designation PF],
nm1.NO_RefDet AS [Composant Niv1],
ar1.AR_Design AS [Nom Composant Niv 1],
nm1.NO_Qte AS [Qte Niv1],
nm1.NO_Type AS [Type N1],
nm1.NO_Repartition AS [Repartition N1],
nm2.NO_RefDet AS [Composant Niv2],
ar2.AR_Design AS [Nom Composant Niv2],
nm2.NO_Qte AS [Qte Niv2],
nm2.NO_Type AS [Type N2],
nm2.NO_Repartition AS [Repartition N2]
FROM F_ARTICLE AS ar2 INNER JOIN
F_NOMENCLAT AS nm2 ON ar2.AR_Ref = nm2.NO_RefDet RIGHT OUTER JOIN
F_ARTICLE AS ar INNER JOIN
F_NOMENCLAT AS nm1 ON ar.AR_Ref = nm1.AR_Ref INNER JOIN
F_ARTICLE AS ar1 ON nm1.NO_RefDet = ar1.AR_Ref ON nm2.AR_Ref = ar1.AR_Ref
WHERE [Produit Fini] IN
(SELECT DISTINCT AR_Ref FROM F_DOCLIGNE
WHERE YEAR(DO_Date)=2016 AND DO_Type IN (6,7) AND AR_Ref LIKE 'ZECOCONT%')
ça ne fonctionne pas et me renvoie le message 'Erreur lors de l'execution du SQL: (DA0003) => [Microsoft][ODBC SQL Server Driver][SQL Server]Nom de colonne non valide : 'Produit Fini'.207"
Ce n'est pas dans les produits finis que je recherche les articles 'ZECOCONT%', mais bien dans leurs nomenclatures de 1er et 2ème niveaux !
Sage 100 Gestion commerciale i7 Pack+ pour SQL Server - v8.12
Sage 100 Entreprise Edition Pilotée 5.1.9
Sage 100 Entreprise Edition Pilotée 5.1.9
Re: Requête SQL sur Editions Pilotées
Bonjour,
Mauvais cahier des charges => mauvaise réponse.
SQL reste de la pure logique, si on connait la structure des données que l'on gère.
Je pense que le forum t'a ouvert pas mal de voies d'analyse et de compréhension déjà.
Analyse ce que tu veux faire, conceptualise et cherche sur les sites de Dev. SQL comment le réaliser.
Sinon, la société dans laquelle je travaille propose des développements sur cahier des charges ou même des formations SQL ...
Si tu veux du tout cuit, c'est plus cher, sinon, continue à bosser, comme chacun de nous.
Faut pas abuser non plus ...
tchao
P.S. Recherche où tu veux mettre dans ta clause Where.
Mauvais cahier des charges => mauvaise réponse.
SQL reste de la pure logique, si on connait la structure des données que l'on gère.
Je pense que le forum t'a ouvert pas mal de voies d'analyse et de compréhension déjà.
Analyse ce que tu veux faire, conceptualise et cherche sur les sites de Dev. SQL comment le réaliser.
Sinon, la société dans laquelle je travaille propose des développements sur cahier des charges ou même des formations SQL ...
Si tu veux du tout cuit, c'est plus cher, sinon, continue à bosser, comme chacun de nous.
Faut pas abuser non plus ...
tchao
P.S. Recherche où tu veux mettre dans ta clause Where.
ASR31
En recherche de missions.
En recherche de missions.
Re: Requête SQL sur Editions Pilotées
Désolé de t'avoir importuné asr31, mais ce n'est pas mon métier et ma société n'investira jamais dans une formation SQL.
En cherchant toute la soirée, j'ai trouvé quelque chose :
Est-ce correct ?? Je l'espère...
Merci pour ton aide asr31
En cherchant toute la soirée, j'ai trouvé quelque chose :
- Code: Tout sélectionner
SELECT
dl.DO_Piece AS [N° Facture],
dl.DO_Date AS [Date Facture],
dl.AR_Ref AS [Réf Article Vendu],
dl.DL_Design AS [Designation AV],
dl.DL_Qte AS [Qté Vendue],
nm1.NO_RefDet AS [Réf Nomenclat Niv 1],
ar1.AR_Design AS [Désignation Nomenclat Niv 1],
nm1.NO_Qte AS [Qte Nomenclat Niv 1],
nm2.NO_RefDet AS [Réf Nomenclat Niv 2],
ar2.AR_Design AS [Désignation Nomenclat Niv 2],
nm2.NO_Qte AS [Qte Nomenclat Niv 2]
FROM F_ARTICLE AS ar2 INNER JOIN
F_NOMENCLAT AS nm2 ON ar2.AR_Ref = nm2.NO_RefDet RIGHT OUTER JOIN
F_DOCLIGNE AS dl INNER JOIN
F_NOMENCLAT AS nm1 ON dl.AR_Ref = nm1.AR_Ref INNER JOIN
F_ARTICLE AS ar1 ON nm1.NO_RefDet = ar1.AR_Ref ON nm2.AR_Ref = ar1.AR_Ref
WHERE YEAR(dl.DO_Date)=2016 AND dl.DO_Type IN (6,7)
AND (nm1.NO_RefDet LIKE 'ZECOCONT%' OR nm2.NO_RefDet LIKE 'ZECOCONT%')
Est-ce correct ?? Je l'espère...
Merci pour ton aide asr31
Sage 100 Gestion commerciale i7 Pack+ pour SQL Server - v8.12
Sage 100 Entreprise Edition Pilotée 5.1.9
Sage 100 Entreprise Edition Pilotée 5.1.9
9 messages
|Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité