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

PostgreSQL Discussion :

probleme comparaison d une partie d une chaine


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut probleme comparaison d une partie d une chaine
    bonsoir je reposte ce que j ai posté sur conseil sur le forum langage sql.j ai une requete a faire sur postgres sql:voila ce que j ai posté
    :



    Bonjour d abord joyeux noel a tous j espere que vous avez bien feté. j ai un probleme j ai realisrer une base de donné d une agence de surveillance avec une table de client et une table site.la table de site indique le lieu d intervention de la société dont les clients sont proprietaire.Le departement de residence du client est iindique par le code postal et l e departement du site aussi par un code postal.
    je dois realiser la requete sql suivante:listre des client possedant au moins un site situé hors de leur departement.
    je ne peux pas comparer les codes postaux comme ça parce que si je compare 57470 et 57501 il me dira que les deux codes postaux sont different et pensera que c est deux departtement different.
    je dois donc comparer les deux premier caractere du code postal mais je ne sais absolument pas comment faire.pouvez vous m aidez?merci d avance!

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    pour extarire les deux premier char : substring(string from 1 for 2)

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    mais je dois utiliser cette requete ou?et je compare comment?je met dans deux tableaux temporaires?je comprend vraiment rien en BdD lool

  4. #4
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    non tu as juste à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select substring(nomchamp from 1 for 2) from nomtable;
    si tu veux plus d'infos pour les fonctions de chaines de caractères jettes un coup d'oeil ici : http://www.postgresql.org/docs/8.0/s...ns-string.html


    ++

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    ouki je comprend mieux mais dans nomchamp je suis obligé de mettre la chaine.Si j ai une colonne qui s appelle cp_client est ce que j ai le droit de faire substring(cp_client from 1 for2?)?

    parce que la d apres l exemple je dois citer explicitement la chaine non?et moi je voudrais qu il fasse des extraction de toute les chaine de la colonnes .Si je suis aps clair dites le moi je reformulerai je sais que j ai du mal parfois.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    c'est pas très clair mais je crois que j'ai saisi

    Je ne comprends pas ce que tu dis quand tu parles de toutes les chaines de toutes les colonnes mais ce que je peux dire c'est que tu peux et doit utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select substring(cp_client from 1 for 2) from nomtable
    Le plus simple est que tu testes direct sur ton appli et tu verras le résultat.

    Bon courage

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    bein je veux dire j ai une colonne du style:


    cp_client cp_site
    ________ __________
    57470 57501
    75001 35000
    67002 75000
    57500 67501


    et je veux qu il fasse l extraction de l ensemble des chaines de cette relation.pour colmparer avec de parti de chaine de la relation cp_site pour voir si des client ont des site situé sur le meme departement qu eux.

    Ce que je ne comprend pas qu une fois qu on a fait :
    select substring(cp_client from 1 for 2)
    from cp_client

    on stocke les chaine de extraite dans une table r1
    Puis ont fait :

    select substring(cp_site from 1 for 2)
    from cp_site

    on stock le resultat dans une table r2

    puis on compare les deux tables ?

  8. #8
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    non je pense que tu n'as pas besoin de stocker dans 2 tables temporaires si je comprends bien ton problème.
    Par contre j'avoue qu'au lendemain de ces fetes, mon cerveau tourne un peu au ralenti donc pourrais tu me donner la structure des tes tables avec un exemple concret et j'essaierai de te donner la requete SQL que tu cherches

  9. #9
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    alors la requete est la suivante:

    liste des clients possedant au moins un site hors de leur departement

    dans la tabble client il y a une colonne code postal qui se presente de la maniere suivante:


    cp_client
    57000
    57501
    84100
    35044
    35400
    88690
    75001
    75002

    dans la table site il y a une colonne code poste (cp_site)qui se presente de la façon suivante:

    cp_site
    57000
    75002
    35044
    66140
    57470
    67200
    84100
    75001
    35400


    la table qui relie les table client et site est la table contrat(num_contrat,num_cl,num_cons,date_contrat)

    voila j espere qu il y a assez d element

  10. #10
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    tiens cette requete devrait passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select client.* FROM client NATURAL JOIN contrat NATURAL JOIN site WHERE substring(client.cp_client FROM 1 FOR 2) <> substring(site.cp_site FROM 1 FOR 2);
    Si le nom de tes clés dans tes tables client et site sont différents des noms dans la table contrat tu dois utiliser le INNER JOIN à la place du NATURAL JOIN.

    Bonne année

  11. #11
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    merci bcp je vas pouvoir avancer y a bcp de question dans le meme jour

    bonne année a toi aussi

  12. #12
    Membre confirmé
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Par défaut
    Tu serais pas en IUT info à metz !!! lol
    Effectivement la commande substring marche à merveille!

    Je l'ai trouvé ds l'aide en ENglish !

  13. #13
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    de rien.

    Par contre penses au tag Résolu

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. [RegEx] Retourner une array sur une partie de la chaine
    Par absurdsystem dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2010, 16h03
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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