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 :

[SQL-Server2005] [Question facile pour un génie] Requête de sélection à formuler


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 8
    Points
    8
    Par défaut [SQL-Server2005] [Question facile pour un génie] Requête de sélection à formuler
    Bonjour ici

    J'ai un problème qui dépasse mes capacités x), j'ai besoin d'un requête de sélection assez particulière.

    Voici les 2 tables sur lesquelles je travaille:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Table "LISTE_A"
    IDA     NUMERO      
    ------  ----------  
    1       545441564        
    2       254657484
    3       565642546
    4       155465124
     
     
    Table "PLAGE"
    IDP     PL_DEBUT     PL_FIN
    ---     ---------    --------
    1       2106         2780
    2       5300         6000

    J'ai besoin d'une requête (ou d'une vue) qui me fasse le travail suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Table "RESULTAT"
    IDA      IDP
    ----     -----  
    1        2
    2        1
    3        2
    4
    Ce qu'il faut que cela fasse:

    Pour chaque IDA de LISTE_A, je dois trouver l' IDP correspondant, de façon à ce que le début (partie gauche) du numéro champ NUMERO de LISTE_A soit compris entre le les valeurs des champs PL_DEBUT et de PL_FIN de PLAGES.

    Par exemple, pour la première ligne de LISTE_A, j'ai lu numéro 545441564. Il faut que je trouve la ligne de la table PLAGE dont PL_DEBUT et PL_FIN encadrent la valeur "5454". L'IDP 2 correspond car 5300 < 5454 < 6000 (le nombre de chiffres de PL_DEBUT et de PL_FIN est identique pour un même upplet donné de PLAGE, mais il n'est pas forcement le même d'une ligne à l'autre)

    Les IDA des lignes de LISTE_A ne peuvent ainsi être associés doivent apparaître dans la réponse (comme le IDA=4 de mon exemple)

    J'paye mon champagne à celui qui me trouve la solution

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je suis loin d'être un Genie du SQl, mais ceci devrait pouvoir fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT IDA, IDP FROM 
        liste_a LEFT OUTER JOIN
        plage ON LEFT(NUMERO,4) BETWEEN PL_DEBUT AND PL_FIN

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Re-Bonjour,

    J'avais mal lu les condition de tailles de PL_DEBUT et PL_FIN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT IDA, IDP FROM 
        liste_a LEFT OUTER JOIN
        plage ON LEFT(NUMERO,LEN(PL_DEBUT)) BETWEEN PL_DEBUT AND PL_FIN

    Maintenant, il me semble que cela fonctionne, mais il y a peut-être mieux à faire.

    Gwénaël

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Si les champs sont numériques vous pouvez faire la même méthode en divisant numero par 100000.

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

Discussions similaires

  1. [SQL] Id séparés par des virgules et requête de sélection
    Par Emotion dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/09/2007, 23h48
  2. [SQL] Sprintf ou concaténation pour créer les requêtes SQL?
    Par EvilAngel dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/09/2006, 17h08
  3. [Débutant] question facile pour vous
    Par Michel_57 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/04/2006, 07h16
  4. Recherche ibrairie pour éxécuter des requêtes SQL via C++
    Par daemon dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 14/06/2004, 10h28

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