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

SQL Oracle Discussion :

Problème dans une SQL besoin d'aide


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    hors
    Inscrit en
    Février 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : hors
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème dans une SQL besoin d'aide
    Bonjour,

    Je sollicite votre expérience à toutes et à tous concernant une requête SQL que je n'arrive pas à mener a bien, je m'explique :

    J'ai besoin d'extraire de la base de données des éléments d'un fichier en les filtrant par année, jusque là tout est OK, j'obtiens mon extraction dans laquelle y figure des contenus et des emplacements, dans cette extraction 1 emplacement m'est inutile car cet emplacement veut dire qu'ils ne sont plus là, je souhaiterais donc qu'il ne s'affiche plus lorsque j'entre ma requête SQL

    Nom : 2.jpg
Affichages : 142
Taille : 18,5 Ko

    en gros je souhaiterais que tout ce qui comporte "Bb.A.555.T555.C5.P5" ne s'affiche plus.

    La requête SQL que j'entre est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cnd.cnd_lib, cnd2.CND_LIB, emp.emp_lib from conditionnement cnd2, conditionnement cnd, emplacement emp where cnd.CND_ID_PARENT= cnd2.CND_ID and cnd.cnd_Lib like '%-197%-3200-%' and instr(cnd.cnd_lib, '-') < 8 and cnd2.emp_id=emp.emp_id order by emp.emp_lib, cnd2.cnd_lib
    pourriez-vous m'aiguiller ?

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    En premier il faudrait réécrire la requête avec l'operateur JOIN pour les jointures, elle sera bien plus facile à lire.

    Cela étant dit, si tu veux filtrer sur une valeur de colonne, pourquoi ne pas ajouter ce filtre dans la clause WHERE, tout simplement ?

    Tatayo

  3. #3
    Futur Membre du Club
    Homme Profil pro
    hors
    Inscrit en
    Février 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : hors
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta rapidité !

    On va dire que le langage est tout nouveau pour moi, dans la clause WHERE il faudrait y rentrer tout les autres emplacement possible ce serait trop long non ? n'est il pas possible d'y ajouter quelque chose du type "Except Bb.A.555.T555.C5.P5" ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 137
    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 137
    Points : 1 917
    Points
    1 917
    Par défaut
    Bonjour,

    Dans ta clause WHERE, ajoute la condition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     emp.emp_lib <> 'Bb.A.555.T555.C5.P5'

  5. #5
    Futur Membre du Club
    Homme Profil pro
    hors
    Inscrit en
    Février 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : hors
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Salut merci pour ton retour, je l'ai ajouté comme cela, mais j'ai un message d'erreur

    Nom : 2.jpg
Affichages : 111
Taille : 11,9 Ko

    je l'ai peut être mal écrit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select cnd.cnd_lib, cnd2.CND_LIB, emp.emp_lib 
    from conditionnement cnd2, conditionnement cnd, emplacement emp 
    where emp.emp_lib <> 'Bb.A.555.T555.C5.P5' cnd.CND_ID_PARENT= cnd2.CND_ID and cnd.cnd_Lib like '%-197%-3200-%' and instr(cnd.cnd_lib, '-') < 8 and cnd2.emp_id=emp.emp_id 
    order by emp.emp_lib, cnd2.cnd_lib

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    manque un AND
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    La même avec des JOINs (mais sans la correction indiquée par McM):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select cnd.cnd_lib, cnd2.CND_LIB, emp.emp_lib 
    from conditionnement cnd2
    inner join conditionnement cnd 
        on cnd.CND_ID_PARENT= cnd2.CND_ID
    inner join emplacement emp 
        on cnd2.emp_id=emp.emp_id
    where emp.emp_lib <> 'Bb.A.555.T555.C5.P5' cnd.cnd_Lib like '%-197%-3200-%' and instr(cnd.cnd_lib, '-') < 8 
    order by emp.emp_lib, cnd2.cnd_lib
    C'est tout de suite plus lisible...

    Tatayo.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    hors
    Inscrit en
    Février 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : hors
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup j'obtient le résultat attendu avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select cnd.cnd_lib, cnd2.CND_LIB, emp.emp_lib 
    from conditionnement cnd2
    inner join conditionnement cnd 
        on cnd.CND_ID_PARENT= cnd2.CND_ID
    inner join emplacement emp 
        on cnd2.emp_id=emp.emp_id
    where emp.emp_lib <> 'Bb.A.555.T555.C5.P5' and cnd.cnd_Lib like '%-197%-3200-%' and instr(cnd.cnd_lib, '-') < 8 
    order by emp.emp_lib, cnd2.cnd_lib

  9. #9
    Futur Membre du Club
    Homme Profil pro
    hors
    Inscrit en
    Février 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : hors
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Après m'avoir fortement aidé une première fois je me permet de sollicité votre aide une nouvelle fois.

    Nom : 2.jpg
Affichages : 69
Taille : 77,4 Ko

    Je m'explique,

    la colonne CND2_LIB dont le contenu est B00145672 correspond a un numéro de carton.
    la colonne CND_LIB dont le contenue est 224-1990-6700-1 correspond a un des éléments contenu dans le carton.

    Je dispose d'une liste de 1000 numéro de carton, je souhaiterais a partir d'une sql avoir le contenu de chaque carton qui apparaît.

    Auriez vous une piste ?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    hors
    Inscrit en
    Février 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : hors
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Nom : 2.jpg
Affichages : 73
Taille : 87,3 Ko

    Alors j'ai réussi via cette SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select cnd.cnd_lib, cnd2.CND_LIB, emp.emp_lib 
    from conditionnement cnd2
    inner join conditionnement cnd 
        on cnd.CND_ID_PARENT= cnd2.CND_ID
    inner join emplacement emp 
        on cnd2.emp_id=emp.emp_id
    where cnd2.cnd_Lib like 'B00079969'
     and instr(cnd.cnd_lib, '-') < 8 
    order by emp.emp_lib, cnd2.cnd_lib
    à récupérer le contenu d'un carton, il me manque plus qu'à y ajouter les 999 autres lol, ou dois-je les ajouter dans la sql plus haut ?

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    C'est la restriction

    where cnd2.cnd_Lib like 'B00079969'.

    Qui fait que vous ne récupérez qu'un seul carton, il suffit d'enlever cette condition


    Note : l'opérateur like s'utilise avec les "wildcard" "%" ou "_", par exemple

    where cnd2.cnd_Lib like 'B0007%'.

    Dans cet exemple, on recherche tout ce qui commence par 'B0007'.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2011, 21h29
  2. Problème dans une requête SQL avec AS et ON ?
    Par bds2006 dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/06/2006, 15h25
  3. Aide sur divers problèmes dans une base
    Par flower dans le forum Access
    Réponses: 10
    Dernier message: 08/06/2006, 18h25
  4. [SQL] Besoin d'aide sur une requête
    Par Angath dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 16h26
  5. Réponses: 1
    Dernier message: 03/08/2005, 11h41

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