1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Code Sql de recherche des équivalents

Discussion dans 'Windev' créé par LAPIPE2018, Juin 11, 2019.

  1. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227
    Bonsoir à tous,
    je cherche quelque chose que je croyais connaitre.
    Voici la structure d'une table SQL :
    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE

    ARTICLE.AR_Substitut est identique à ARTICLE.AR_Ref
    L'idée c'est que si je cherche un article de nom X, sachant que j'ai un autre article Y, déclaré comme substitue de X, que la recherche intègre les 2 au même moment. Il faut juste que j'aie déclaré l'un équivalent de l'autre.
    Comment le fait vous ? Je veux dire la forme de la requête.
    Bonsoir
     
    Tags:
  2. commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    slt
    je suis pas sur d'avoir compris, mais :

    where
    ARTICLE.AR_Substitut = ARTICLE.AR_Ref

    c'est ca que tu cherches?
     
  3. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    slt
    je suis pas sur d'avoir compris, mais :

    where
    ARTICLE.AR_Substitut = ARTICLE.AR_Ref

    c'est ca que tu cherches?
    Cliquez pour agrandir...
    Non,
    utilisez ceci si vous avez le même soucis

    select au1.au_lname, au1.au_fname, au1.city

    from authors au1

    where au1.city in

    (select au2.city

    from authors au2

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    ok.
    alors ca :

    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE
    WHERE ARTICLE.AR_Ref IN (SELECT ARTICLE.AR_Ref as ref2 ,ARTICLE.AR_Substitut AS subst FROM ARTICLE)

    j'ai pas testé, mais ca doit ressembler a ca
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    Moi je dirais au contraire que
    ARTICLE.AR_Substitut = ARTICLE.AR_Ref
    que si il n'y as pas de Substitut a cet article.
    donc si on cherche l'article x
    on cherchera si
    ARTICLE.AR_Substitut = x
    ou
    ARTICLE.AR_Ref = x
    où x sera un paramètre de la requête.
     
  • commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    en fait, tu cherche le produit de substitut ou le produit original?
     
  • commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE
    WHERE ARTICLE.AR_Ref IN (SELECT ar2.AR_Ref as ref2 ,ar2.AR_Substitut AS subst FROM ARTICLE ar2 where ar2.AR_Substitut=x)
     
    #7 commun, Juin 11, 2019
    Dernière édition: Juin 11, 2019
  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227
    Je cherche l'article et ses substitut en même temps,
    J'ai partagé la solution avec le guide plus haut.
    Mais ce n'est pas encore àa à 100%, je suis encore à la recherche.
    L'idée c'est que si on cherche un produit, que les équivalents fassent parti des options
    SI X s'appelle POUPOUM et Y s'appelle PAMPAM, si je cherche PAMPAM, je dois avoir aussi en proposition POUMPOUM .
    C'est cela l'idée
     
    #8 LAPIPE2018, Juin 11, 2019
    Dernière édition: Juin 11, 2019
  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE
    WHERE ARTICLE.AR_Ref IN (SELECT ar2.AR_Ref as ref2 ,ar2.AR_Substitut AS subst FROM ARTICLE ar2 where ar2.AR_Substitut=x)
    Cliquez pour agrandir...
    Ca na donnera pas
    je pense qu'il faut faire une Union de requête
     
    #9 LAPIPE2018, Juin 11, 2019
    Dernière édition: Juin 11, 2019
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Est ce qu'il peut y avoir plusieurs substituts pour une référence ou c'est 1 substituts pour 1 réf. Cela va changer ta requête
     
  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Est ce qu'il peut y avoir plusieurs substituts pour une référence ou c'est 1 substituts pour 1 réf. Cela va changer ta requête
    Cliquez pour agrandir...
    Bien sûr que si Phantom.
    Je peux avoir plusieurs articles équivalents. Au niveau de la relation, C'est simple.
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Alors ca devrait le faire comme ceci

    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE
    WHERE
    (
    ARTICLE.AR_Ref = {pRech}
    OR
    ARTICLE.AR_Ref IN (SELECT a.AR_Ref FROM ARTICLE a where a.AR_Substitut = {pRech})
    )
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Alors ca devrait le faire comme ceci

    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE
    WHERE
    (
    ARTICLE.AR_Ref = {pRech}
    OR
    ARTICLE.AR_Ref IN (SELECT a.AR_Ref FROM ARTICLE a where a.AR_Substitut = {pRech})
    )
    Cliquez pour agrandir...
    c'est ce que j'ai dit.
    mais la ta mis le code SQL.
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    SELECT
    ARTICLE.AR_Ref,
    ARTICLE.AR_Design,
    ARTICLE.FA_CodeFamille,
    ARTICLE.AR_Substitut,
    ARTICLE.AR_Garantie
    FROM
    ARTICLE
    WHERE ARTICLE.AR_Ref IN (SELECT ar2.AR_Ref as ref2 ,ar2.AR_Substitut AS subst FROM ARTICLE ar2 where ar2.AR_Substitut=x)
    Cliquez pour agrandir...

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Tu as 2 conditions dans ta requête imbriquer, ca ne peut pas fonctionné
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    c'est ce que j'ai dit.
    mais la ta mis le code SQL.
    Cliquez pour agrandir...
    LAPIPE à écrit :
    Comment le fait vous ? Je veux dire la forme de la requête.
    Alors je lui ai mit une requête non ?!?!?!

    Sérieux

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    tu commence à être lourd dans tes commentaires inutiles...
     
  • commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    Phantom
    ha bon?
    je pensais pouvoir mettre une condition dans chaque requete, mais j'ai pas testé.

    ici:
    ARTICLE.AR_Ref IN (SELECT a.AR_Ref FROM ARTICLE a where a.AR_Substitut = {pRech})

    tu as 2 conditions,non?

    quelle difference avec :
    WHERE ARTICLE.AR_Ref IN (SELECT ar2.AR_Ref as ref2 ,ar2.AR_Substitut AS subst FROM ARTICLE ar2 where ar2.AR_Substitut=x)

    ya des trucs en sql que je pige pas parfois (souvent)
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Excuse moi, j'ai dit conditions, je voulais dire rubrique
    Ta requête imbriquer ne doit retourner qu'une seule rubrique (colonne)

    T'as requête imbriquer est :
    (SELECT
    ar2.AR_Ref as ref2 ,
    ar2.AR_Substitut
    FROM
    ARTICLE
    ar2
    WHERE
    ar2.AR_Substitut=x)

    Donc retourne 2 rubriques (colonnes)
    C'est simplement ca ;)
     
  • PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Par contre, j'irais plus avec une table de relation du style (voir image), plutôt que d'inclure un substitut dans la même table.
    De cette manière ca te permet de :
    - avoir plus d''un substitut par produit.
    - ajouter des rubrique sur ta relation Article-Substitut ce qui, assez souvent est utile. S'il faut qu'il soit substitue mais dans certaine conditions seulement par exemple.

    Mais je connais pas le but et l'évolution que prendra ton programme alors, peut-être que dans la même table c'est suffisant.
     

    Fichiers attachés:

  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    LAPIPE à écrit :
    Comment le fait vous ? Je veux dire la forme de la requête.
    Alors je lui ai mit une requête non ?!?!?!

    Sérieux

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    tu commence à être lourd dans tes commentaires inutiles...
    Cliquez pour agrandir...

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Par contre, j'irais plus avec une table de relation du style (voir image), plutôt que d'inclure un substitut dans la même table.
    De cette manière ca te permet de :
    - avoir plus d''un substitut par produit.
    - ajouter des rubrique sur ta relation Article-Substitut ce qui, assez souvent est utile. S'il faut qu'il soit substitue mais dans certaine conditions seulement par exemple.

    Mais je connais pas le but et l'évolution que prendra ton programme alors, peut-être que dans la même table c'est suffisant.
    Cliquez pour agrandir...
    Effectivement c'était l'ancien système que j'utilisais. Je voulais le changer simplement. Le truc est simple pour les articles de même nom. Avec contient c'est fait. Si tu prends les produits pharmaceutiques, les noms changent parfois. Il est facile de trouver un produit et ensuite chercher ses équivalents. Mais L'idéal serait de sortir dans la requêtes un produits et ses équivalents directements.
    C'est une recherche pour un projet future.
    BAT
     
  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    647
    J'aime reçus:
    227
    L'autre hypothèse qui me parait simple, c'est utiliser les fonctions big datas. C'est à dire un champs qui contient les noms des équivalents
     
  • Partager cette page

    Chargement...