IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête Table + Vue


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut Requête Table + Vue
    Bonjour à toutes et à tous,

    Quelqu'un/e aurait-il/elle la solution à la requête que je souhaite créer sans succès ?

    J'ai une Table T1 contenant plusieurs colonnes dont C1 et C2. La colonne C2 contient les valeurs :
    M636
    ADPFON
    OPFN
    DCCO
    CDVR
    ADDCCO
    EIB0
    TPRI
    P639
    VH45
    WW2N
    K515
    MC00
    VMUP10REST
    ... etc (je vous épargne le reste de la liste), avec pour chacune des valeurs, un libellé correspondant en C1.

    Là où ça se complique, c'est que dans une Vue V1 (avec des données d'une autre base de données), j'ai une colonne C5, qui contient pour les deux premiers enregistrements, les chaines de caractères suivantes :
    ADDORG_vue_non_hebdo_BO, ADDPRT_vue_non_hebdo_BO, ADDCCO_vue_non_hebdo_BO, KA01_BO, ADDPPE_vue_non_hebdo_BO, KA10_BO, PARU_BO
    et
    VMUP10REST_ADH_CPDT_SOC_0.WDRC_DEM_V0, VMUP10REST_ADH_CPDT_SOC_0.WDRC_CHAMP_V0, ADDCCO_BO, ADDPRT_BO, ADDORG_BO, VMUP10REST_ADH_CPDT_SOC_0.WDRC_DocGed_V0, VMUP10REST_ADH_CPDT_SOC_0.WDRC_ComDem_V0, ADDRPAFL_BO, ADCPTE_BO, ADDPRT_vue_hebdo_BO, WW2N_BO

    Comment dois-je écrire la requête (SQL Server) me permettant pour chaque enregistrement présent dans la vue, de chercher dans la colonne C2 de la Table T1, si une des valeurs qui s'y trouve, apparaît dans la C5 de la Vue, et dans ce cas, afficher le libellé apparaissant en C1 de la Table T1 ?

    J'espère que cette description de mon souci est suffisamment claire et qu'une âme charitable y apportera une réponse. J'ai essayé avec Where, avec Like, avec Substr etc... mais sans succès.

    Un énorme merci par avance à toutes et tous.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select v1.c5, t1.c1
    from v1
    join t1 on charindex(t1.c2, v1.c5) > 0;

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut
    Bonjour Vanagreg,

    Merci pour cette piste.

    Malheureusement, le résultat de la requête reste désespérément vide.

    Je viens de copier le code que tu as suggéré, et remplacé les C, V, T, 1, 2 et 5 par les noms réellement indiqués dans ma base de données, mais le résultat n'affiche que les deux en-tête de colonne correspondant à C5 et C1...


    Pour la jointure entre la table et la vue, j'arrive à suivre, mais tu m'a perdu sur le charindex...

    Le charindex fonctionne sans le AS habituel ?? avec SELECT CHARINDEX('OM', 'Customer') AS MatchPosition; on récupère 5 en résultat de requête, mais pour ma BDD, il réagit comment avec le ON ?

    Je pense que mon souci provient du fait que dans la colonne C2, il n'y a QUE la partie réellement utile du "code", sans les fioritures du genre _vue_non_hebdo_BO, etc...

    Faut-il que j'ajoute des % avant et après le C2 pour indiquer que je cherche cette chaine de caractères quoi qu'il puisse y avoir avant et après ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Je ne suis pas familier avec SQL Server, je ne sais pas si tu peux utiliser une fonction dans la clause WHERE (je suppose que si), sinon oui tu peux mettre un like avec des %:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select v1.c5, t1.c1
    from v1
    join t1 on v1.c5 like '%' + t1.c2 + '%'

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut
    Re...

    Un ENOOOOOORME Merci Vanagreg !

    Je crois en être venu à bout... J'ai finalement ajouté des Replace pour nettoyer les données, et ça fonctionne nickel.

    Merci encore ;-)

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    bonjour,

    Pour la solution de Vanagreg avec le CHARINDEX, je pense qu'il y juste une inversion des paramètres...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/08/2007, 21h13
  2. Parcours d'une table/vue
    Par Yndigos dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/08/2007, 13h48
  3. requête table de correspondance
    Par RodEpsi dans le forum Access
    Réponses: 4
    Dernier message: 19/02/2007, 20h06
  4. Créer une table a partir d'une autre table/Vue
    Par TangoZoulou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/11/2006, 10h45
  5. Requête sur Vue SQL Server 2000 PLANTE aléatoirement
    Par StarMusic dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2006, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo