Menu

Condition sur 2 champs

pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 2 janv. 2018 à 20:19 - Dernière réponse : pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention
- 10 janv. 2018 à 07:32
Bonjour,

Bonne année à tous et surtout la santé.

Je cherche à trier des champs dans une table, dans une table j'ai 2 champs qui gèrent l'emballage dans une fiche article, PAAPRIORITY=0 ou PAAPRIORITY=1 et PAADEFAULT =1 et je voudrais récupérer l'un ou l'autre par une condition c.a.d :



si PAAPRIORITY=1 on prend PAAPRIORITY=1 et si PAAPRIORITY=0 alors on prend PAADEFAULT =1



j'ai essayé avec ça dans select, mais je récupère les 2 champs

Case when PAAPRIORITY=0 then 1 else 0 end as FILTRAGE_Priorité

Bon j’espère que c'est clair mon explication.

Bonne soirée.

Pascal
Afficher la suite 

Votre réponse

60 réponses

yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 2 janv. 2018 à 20:57
0
Merci
bonsoir,
tu n'es pas du tout clair, peut-être avec quelques exemples?
et ainsi?
if(PAAPRIORITY=1,1,PAADEFAULT) 
Commenter la réponse de yg_be
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 3 janv. 2018 à 09:16
0
Merci
Bonjour yg_be,

Bonne année à toit et à toute ta famille et encore merci pour ton aide.

j'ai mis le code , mais il y a une erreur sur if.

Je vais essayer d’être plus clair, dans une fiche article j'ai la table emballage et j'ai 2 champs PAADEFAULT qui est toujours égal à 1 et j'ai PAAPRIORITY qui est égal à 1 si il existe, sinon il y a que PAADEFAULT=1.

Donc j'essaie de récupérer PAAPRIORITY et si il n'existe pas, je récupére PAADEFAULT.

ci-joint mon code :

SELECT STOCOMMENT as Commentaire,
article.ARTNOARTICLE as Code,
article.ARTSORT as Genre, case when artvariety<>'' then artspecies||' '||artvariety else artspecies end as Espece_Variete,
stocriteria1.pardesignation as Etat_lot,
artcriteria1.pardesignation as Diam_pot,
artpresentation.pardesignation as Litrage,
artcriteria3.pardesignation as Presentation,
artcriteria2.pardesignation as Presentation,
unvdesignation as Taille,
artcriteria4.pardesignation as Diam_tete,
artcriteria9.pardesignation as HT_total,
DEPOT.PARDESIGNATION as Site,
EMPLACEMENT.EMPDESIGNATION as Parcelle_lot,
stocriteria2.pardesignation as Marquage,
paaprivilegedpackage as Condition,
packaging.pacdesignation as Condition,
paaquantity as Qte_cond,
paaqtyprivilegedpackage as Nb_cond,
paaquantity*paaqtyprivilegedpackage as Qte_Roll,
paaqtyprivilegedpackage2 as Nb_plt_cam,
paaqtyprivilegedpackage3 as Metrage_cam,
paaquantity*paaqtyprivilegedpackage*paaqtyprivilegedpackage2*paaqtyprivilegedpackage3 as Qte_plt_cam,
article.ARTCRITERIA19 as Code_tri,
article.ARTCRITERIA19 as Code_tri,
artcriteria19.pardesignation as tri,
artcriteria8 as Initial_fourn,
article.ARTPRICEREFMARGIN as Tarif_PR,
trfcostvalue as Tarif_Palmacea,

artcriteria12.pardesignation as Notre_Selection,
STOBEGINDATEAVAILABLE,
STOADJUSTQTY,
STOQTYRESERVORDER,
Stostockdispo,
Stostockphysique,

ARTQTEN1 as Qte_N1,
ARTQTEN as Qte_N




FROM article article
left outer join PACKAGEARTICLE on paanoarticle=artnoarticle
left outer join artcost on trfnoarticle=artnoarticle
left outer join supplier on cusnocustomer=artmainsupplier
left outer join artpresentation on artpresentation.parcodeparam=article.artpresentation
left outer join unitevente on unvcode=artsize
left outer join artfamily on artfamily.parcodeparam=article.artfamilycode
left outer join artcriteria5 on artcriteria5.parcodeparam=article.artcriteria5
left outer join artcriteria1 on artcriteria1.parcodeparam=article.artcriteria1
left outer join artcriteria2 on artcriteria2.parcodeparam=article.artcriteria2
left outer join artcriteria3 on artcriteria3.parcodeparam=article.artcriteria3
left outer join artcriteria9 on artcriteria9.parcodeparam=article.artcriteria9
left outer join artcriteria4 on artcriteria4.parcodeparam=article.artcriteria4
left outer join artcriteria10 on artcriteria10.parcodeparam=article.artcriteria10
left outer join artcriteria11 on artcriteria11.parcodeparam=article.artcriteria11
left outer join artcriteria6 on artcriteria6.parcodeparam=article.artcriteria6
left outer join artcriteria7 on artcriteria7.parcodeparam=article.artcriteria7
left outer join artcriteria12 on artcriteria12.parcodeparam=article.artcriteria12
left outer join artcriteria13 on artcriteria13.parcodeparam=article.artcriteria13
left outer join artcriteria19 on artcriteria19.parcodeparam=article.artcriteria19
left outer join artcriteria8 on artcriteria8.parcodeparam=article.artcriteria8
Left outer join packaging on packaging.paccodepackaging=packagearticle.paaprivilegedpackage

inner join LOTSTOCK on STONOARTICLE=ARTNOARTICLE
Left outer join EMPLACEMENT on EMPLACEMENT. EMPCODE=STOLOCATEMPLACEMENT
left outer join STOCRITERIA1 on STOCRITERIA1.parcodeparam=LOTSTOCK.STOCRITERIA1
left outer join STOCRITERIA2 on STOCRITERIA2.parcodeparam=LOTSTOCK.STOCRITERIA2
Left outer join DEPOT on DEPOT.PARCODEPARAM=LOTSTOCK.STODEPOT
where artnoarticle<>'9995'
if(PAAPRIORITY=1,1,PAADEFAULT)
and stooutofdate<>1
and STODEPOT <>'ZZZ'
and trfnocostident=3
and ARTMAINSUPPLIER=6
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 3 janv. 2018 à 20:36
cela me renvoie une ligne avec PAAPRIORITY=1 et une ligne PAADEFAULT=1 et moi je veux une seule ligne avec PAAPRIORITY si =1 et si PAAPRIORITY =0 je veux qu'il me donne PAADEFAULT=1 à la place.
yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention > pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 3 janv. 2018 à 21:38
le SELECT retourne trois valeurs par ligne. une valeur pour PAAPRIORITY, une pour PAADEFAULT, et une pour IIF(PAAPRIORITY=1,1,PAADEFAULT).
merci de partager ces trois valeurs pour chaque ligne.
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 4 janv. 2018 à 08:27
pour PAAPRIORITY RENVOIE 1
pour PAADEFAULT RENVOIE 1
pour IIF(PAAPRIORITY=1,1,PAADEFAULT). RENVOIE 1

peut être qu'il n'y pas de solution pour récupérer l'un ou l'autre ?
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 4 janv. 2018 à 08:28
ou ce n'est peut être pas un iif qu'il faut écrire ?
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 4 janv. 2018 à 08:35
pour IIF(PAAPRIORITY=1,1,PAADEFAULT).
j'ai une ligne avec RENVOIE 1 pour PAAPRIORITY et une autre ligne avec RENVOIE 1 pour PAADEFAULT pour le même code article, cela me double les lignes.
Commenter la réponse de pascalou83400
yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 4 janv. 2018 à 10:20
0
Merci
il est possible de récupérer l'un ou l'autre, nous sommes en train de tester pour obtenir une solution.
j'essaie de comprendre pourquoi
IIF(PAAPRIORITY=1,1,PAADEFAULT)
ne te convient pas.
pour comprendre cela, j'ai besoin de comprendre pour quelles combinaisons de valeur de PAAPRIORITY et de PAADEFAULT le résultat retourné par
IIF(PAAPRIORITY=1,1,PAADEFAULT)
ne te convient pas.
et donc je te demande de me montrer des réponses à la requête suivante, et de m'expliquer pourquoi la valeur de IIF(PAAPRIORITY=1,1,PAADEFAULT) ne te convient pas.
SELECT PAAPRIORITY, PAADEFAULT, IIF(PAAPRIORITY=1,1,PAADEFAULT) FROM ...
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 6 janv. 2018 à 05:50
Bonjouir yg_be,

Oui c'est ce que j'obtiens avec la requête existante.

Ci-joint le fichier sans commentaire, j'ai mis les lignes en rouge que je ne veux pas.

https://we.tl/LHfIdforix

Merci pour ton aide.

Pascal
yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention > pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 6 janv. 2018 à 10:43
ok, je vois mieux. je suppose que quand il y a plusieurs lignes avec le même article.ARTNOARTICLE, et qu'au moins une des ces lignes a PAAPRIORITY=1, tu ne veux garder que les lignes qui ont PAAPRIORITY=1. est-ce exact?
yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention > yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 6 janv. 2018 à 10:56
Où se trouvent les champs PAAPRIORITY et PAADEFAULT? Sont-ils dans la table PACKAGEARTICLE?
yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention > yg_be 5793 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 6 janv. 2018 à 11:13
à tout hasard, je suggère d'ajouter ceci dans la requête, juste avant le WHERE:
left outer join 
(SELECT  
article.ARTNOARTICLE as t_code, 
max(iif(PAAPRIORITY=1,2,PAADEFAULT)) as best_package
FROM article article 
left outer join PACKAGEARTICLE on paanoarticle=artnoarticle 
group by article.ARTNOARTICLE) tmax 
on iif(PAAPRIORITY=1,2,PAADEFAULT) = tmax.best_package and artnoarticle = tmax.t_code
pascalou83400 254 Messages postés dimanche 20 juillet 2014Date d'inscription 27 avril 2018 Dernière intervention - 10 janv. 2018 à 07:32
Bonjour yg_be,

Meilleurs voeux à toi et à tous tes proches.


Désolé je ne reponds pas rapidement , car je suis en déplacement avec des clients....

pour les questions

je suppose que quand il y a plusieurs lignes avec le même article.ARTNOARTICLE, et qu'au moins une des ces lignes a PAAPRIORITY=1, tu ne veux garder que les lignes qui ont PAAPRIORITY=1. est-ce exact? Oui c'est bien ca.

Où se trouvent les champs PAAPRIORITY et PAADEFAULT? Sont-ils dans la table PACKAGEARTICLE? oui c'est bien ca.

Je vais essayer ce soir de faire les modifs et je te dis si cela fonctionne.

Merci
Commenter la réponse de yg_be