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 :

Problème SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème SQL
    Bonjour à tous,
    Je travaille sur une base dont je ne peux pas modifier la structure.
    Mon problème est le suivant :
    Dans une table, une colonne contient une liste d'ID, séparés par des virgules. Mon problème est de créer une requète qui récupère les lignes dont cette colonne contienne tel ou tel autre ID (Il y en a toujours qu'1 à récupérer).
    Par exemple, je veux sortir les lignes où la colonne concernée contient l'ID 12.
    Savez-vous comment je peux faire ça ?
    Merci de votre aide.
    Florent

  2. #2
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Tu peux utiliser la fonction LIKE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM ta_table
    WHERE col_id LIKE '%id_cherché%';

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Pour éviter tout ambiguité entre 10 et 100 je modifierais la requête de Nantais comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM ta_table
    WHERE ',' || col_id || ',' LIKE '%,id_cherché,%';

    Laly.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Le problème avec LIKE, c'est qui si, par exemple je cher l'ID 2, il va me sortir 2 , mais égement 12, 20, 22, etc...

    Une solution avec des virgules, comme ça :

    WHERE col_id LIKE '%,id_cherché,%';

    n'est pas envisageable non plus car quand il n'y a qu'1 élément dans la liste, il n'y a pas de virgule... Idem quand l'élément est en première position (pas de virgule à gauche) ou en dernière (pas de virgule à droite...

  5. #5
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Effectivement mon cas était trop simpliste

    Eh bien tu peux prévoir chaque solution en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM ta_table 
    WHERE col_id LIKE '%,id_cherché,%'
    OR col_id LIKE 'id_cherché,%'
    OR col_id LIKE '%,id_cherché';

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui en effet, mais là le problème, c'est que la requête se traine, se traine...
    J'espérais une soluition avec une sous-requête ou quelque chose du genre... bref si vous avez des choses à proposer. Merci !

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ou pourquoi pas simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ','||col_ids||',' LIKE ',%id_cherché%,'
    en encadrant col_ids par des , tu ne devrais plus avoir de probléme... par contre, tu feras forcément un FULL SCAN

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Plus exactement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ', ' || ColId LIKE '%, 2%'
    A +

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    La solution d'orafrance, et précédement de lalystar, que je remercie vivement, semble fonctionner au poil. Qu'apporte de plus vos corrections ?
    Merci

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

Discussions similaires

  1. Problème SQL avec ASP
    Par Mateache dans le forum ASP
    Réponses: 4
    Dernier message: 25/01/2006, 10h24
  2. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 20h33
  3. SQL : résoudre ce type de problème sql.
    Par LESOLEIL dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/10/2005, 14h48
  4. Problème SQL vb5
    Par mpat dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/08/2005, 17h49
  5. Problèmes SQL
    Par stampe dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/07/2004, 22h02

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