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 :

Question SQL (facile) mais pas pour moi


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Question SQL (facile) mais pas pour moi
    Bonjour à tous,

    Je suis bloqué sur une requête SQL,

    En fait j'ai une table "grille" qui contient un champ texte code exemple:
    "1,2,3,4,5"

    Et je voudrais sélectionner tous les records qui contiennent la chaîne "1,3,4,5"

    Je ne suis pas un spécialiste sql , donc je me demandais comment procéder pour obtenir le résultat voulu

    J'espère que vous pourrez m'aider

    Merci d'avance

  2. #2
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Essaie une requete comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * From grille where Champ1 Like "1,3,4,5"

  3. #3
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    dans les requette sql vous pouvez aussi utiliser le caractere de substitution "%"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM grille WHERE (Champ1 LIKE "%1,2,3,4")

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre aide ,

    J'ai essayé j'ai un fichier test avec les combinaisons
    "1,2,3,4,8" et "1,2,3,4"

    J'ai essayé :

    SELECT Grille.Nom AS Nom, Grille.combinaison AS combinaison
    FROM Grille
    WHERE combinaison LIKE '%1,2,3'

    ET rien ne correspond mais lorsque je fais LIKE '%1,2,3,4'
    Je retrouve le bon record -> même résultat que si je faisais
    WHERE combinaison = '1,2,3,4'

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je viens de faire d'autres tests, Ca avait buggé (j'utilises Windev8)
    J'ai qqch qui fonctionne un peu :

    WHERE Grille.combinaison LIKE '%1,2,3,4%'

    J'obtiens bien les records correspondants

    Mais l'idée de la requète est de récupérer les records du style:

    WHERE Grille.combinaison LIKE '%1,3,4%'

    Et là le LIKE ne suffit plus , est ce c'est possible de faire ça en SQL ?

  6. #6
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    et comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Grille.Nom AS Nom, Grille.combinaison AS combinaison 
    FROM Grille 
    WHERE combinaison LIKE '%1%3%4%'

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci à vous pour vos réponses rapides

    Oui TheRussian, j'ai essayé hier soir ce type de requête

    Et ça marche ! dans une certaine mesure

    Car si j'ai des combinaisons du type 11,13,14 le LIKE %1,%3%4%
    renverrait true,

    On pensait mettre les chiffres sur 2 positions 01 au lieu de 1 pour éviter ce problème

    Qu'en pensez vous

  8. #8
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * from
    (select concat(concat(',', combinaison),',') as ligne from grille) sousRequete 
    where (instr(ligne,',1,')>0 and instr(ligne,',3,')>0 and instr(ligne,',4,')>0)
    Ceci devrait marcher dans tous les cas.
    J'espere que ca peut t'aider

    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  9. #9
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Bonjour,
    Ces chiffres correspondent à quelque chose de précis?
    Ne devraient-ils pas être dans une table annexe avec une table liaison (association) pour permettre la sélection facilement et bien plus rapidement que de chercher des chiffres dans un champ texte?
    Sinon la solution de the russian est correcte mais très longue si les champs deviennent longs et le nombre d'enregistrement important.
    Cordialement
    Pinocchio
    La SNCF est mon ami
    blog PARIS-GRANVILLE
    Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)

  10. #10
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par pinocchio
    Bonjour,
    Ces chiffres correspondent à quelque chose de précis?
    Ne devraient-ils pas être dans une table annexe avec une table liaison (association) pour permettre la sélection facilement et bien plus rapidement que de chercher des chiffres dans un champ texte?
    Sinon la solution de the russian est correcte mais très longue si les champs deviennent longs et le nombre d'enregistrement important.
    Cordialement
    Pinocchio
    La solution de The Russian est partiellement correcte, car impossible de faire la difference entre 1 et 10 par exemple.
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  11. #11
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Effectivement ma solution ne répond pas pleinement à la question.

    A première vue je pense que pinocchio à raison de dire qu'il faudrait mettre cette zone dans une table annexe car dans le cas présent il y a plusieurs valeurs dans un même champ (Pas de Forme Normale).
    Mais si la modification n'est pas possible et qu'on est sur d'avoir des valeurs comprises entre 00 et 99, forcer les valeurs sur 2 chiffres parait être une bonne idée.

  12. #12
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci à vous pour votre aide
    Je teste ce soir

  13. #13
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Voilà ça fonctionne comme voulu sur 2 digits, encore merci à tous pour votre aide

  14. #14
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Un petit clique sur le bouton résolu dans ce cas
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  15. #15
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Oups, il n'a pas cliqué sur le bouton Résolu :'(

    Mais bon si vous avez toujours un problème avec l'SQL, éxecutez votre requête en QBE et visionnez le code, vous pourrez toujours en apprendre quelquechose .

  16. #16
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par Phadeb
    Oups, il n'a pas cliqué sur le bouton Résolu :'(

    Mais bon si vous avez toujours un problème avec l'SQL, éxecutez votre requête en QBE et visionnez le code, vous pourrez toujours en apprendre quelquechose .
    et quoi donc ?
    j'espere que tu ne parles pas des "," avant et apres la chaine de retour, car j'ai juste voulu montrer un exemple de recherche, avec une fonction de supp, on obtient quelque chose de cosmetiquement acceptable
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

Discussions similaires

  1. SQL Oracle simple, mais pas pour moi
    Par Cyril75 dans le forum SQL
    Réponses: 2
    Dernier message: 24/02/2012, 16h19
  2. Recherche d'une regex toute simple (mais pas pour moi)
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 15/04/2009, 15h23
  3. Question de math simplissime mais par pour moi
    Par denis.ws dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/04/2008, 12h50
  4. Question bête mais importante pour moi
    Par walf80 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 27/04/2007, 04h40
  5. [SQL] Requête dificile à réaliser (pour moi)
    Par gunth dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/06/2006, 06h48

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