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 :

[Débutant] Comparatif en requête imbriquées


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2019
    Messages : 39
    Points : 40
    Points
    40
    Par défaut [Débutant] Comparatif en requête imbriquées
    Bonjour à tous,

    Je débute en SQL je viens donc solliciter votre aide.

    J'ai une table de locaux, avec des colonne : nomLocal, numeroBatiment, numeroService
    A un numéro de bâtiment correspond un numéro de service. Exemple pour le bâtiment 01 , le numéro de service sera 01A, ect... Un locaux appartient à un batiment et donc à un numéro de service.

    L'idée est de créer une requête qui me permet de détecter les locaux appartenant à un bâtiment n'ayant pas le bon numéro de service. Exemple le localxxx du batiment 01 à un numéro de service 02A alors que le numéro de service devrait etre 01A.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT *
    FROM   locaux
    WHERE  nomLocal LIKE '%LOCAL%'
           AND numeroBatiment IN (SELECT DISTINCT numeroBatiment
                                    FROM   locaux
                                    WHERE  nomLocal LIKE '%LOCAL%')
           AND numeroService IN (SELECT DISTINCT numeroService
                        FROM   locaux
                        WHERE  nomLocal LIKE '%LOCAL%')
    J'ai commencé par cette requete mais ensuite je suis un peu perdu sur comment comparer le numéro de service d'un local avec celui auquel il est censé appartenir.
    Auriez vous une piste de travail ? Ou une approche à proposée ?

    Merci d'avance pour votre temps.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    mai 2002
    Messages
    8 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2002
    Messages : 8 973
    Points : 30 129
    Points
    30 129
    Par défaut
    Bonjour,

    Si réellement le numéro de service est formé du numéro de bâtiment suivi d'au moins un caractère, la requête suivante devrait être suffisante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  *
    FROM    locaux
    WHERE   nomLocal        LIKE '%LOCAL%'
        AND numeroService   NOT LIKE numeroBatiment || '_%'
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 736
    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 : 8 736
    Points : 32 088
    Points
    32 088
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Sauf si la table "LOCAUX" est une table de travail, elle ne devrait pas contenir à la fois le code bâtiment, le code local et le code service.
    On devrait avoir 3 tables distinctes : "BATIMENT", "LOCAL" et "SERVICE"

    À partir de là, on évite les redondances et la requête sera plus simple et plus performante.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2019
    Messages : 39
    Points : 40
    Points
    40
    Par défaut
    Bonjour, tout d'abord merci à vous deux pour votre retour.

    Escartefigue est dans le vrai, je me suis mal expliqué.

    Il y a bien une table LOCAL , BATIMENT, SERVICE.

    Pour le numéro de service j'ai donné 01A pour l'exemple, il diffère du numéro de batiment.

    Merci

    Une question cependant : NOT LIKE numeroBatiment || '_%' à quoi correspond || ?

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2019
    Messages : 39
    Points : 40
    Points
    40
    Par défaut
    J'ai finalement résolu le problème via une autre approche, j'aurai été curieux quand même de voir quelle solution vous proposiez.

    Merci pour votre temps et bonne journée.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 736
    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 : 8 736
    Points : 32 088
    Points
    32 088
    Billets dans le blog
    2
    Par défaut
    La double barre verticale (AltGR + 6) c'est le symbole de concaténation de chaînes de caractères

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

Discussions similaires

  1. Requêtes imbriquées Débutant
    Par RegProg dans le forum SQL
    Réponses: 11
    Dernier message: 04/07/2008, 14h32
  2. Pb requête imbriquée
    Par ddams dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/04/2004, 12h13
  3. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  4. Requêtes imbriquées ?
    Par Ph. B. dans le forum XMLRAD
    Réponses: 7
    Dernier message: 06/05/2003, 13h19
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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