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 :

Requete SQL ; pas si simple ?!


Sujet :

Langage SQL

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Points : 56
    Points
    56
    Par défaut Requete SQL ; pas si simple ?!
    Bonjour,

    J'ai une table personnes qui contient un id, un nom et un tel :
    exemple :
    10 | toto | 01020356
    11 | titi | 01787863
    12 | tutu | 45454574
    13 | tata | 22222289

    Pour gérer des informations supplémentaires facultatives sans charger inutilement cette table, j'ai créé une autre table info_supp qui contient un id, un nom et une info supp :
    10 | toto | infoxxx
    13 | tata | infoyyy

    Je voudrais récuperer pour un export un extrait de la table personnes avec les éventuelles colonnes supplémentaires comme suit :
    10 | toto | 01020356 | infoxxx
    ou selon la clause where portant sur l'ID
    11 | titi | 01787863 | Null

    J'ai essayé des jointures dans tous les sens sans succès.
    Pourtant le besoin me semble légitime ( je me demande comment j'ai pu m'en passer avant ;o)

    Je tourne en rond.

    Merci du coup de main

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    a mon avis, il faut faire une jointure gauche (left join)
    dans ton autre table,le nom est inutile si ton id est unique

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Points : 56
    Points
    56
    Par défaut Hélas non
    Un left outer join affiche tous les enregistrements de la base avec la colonne supp. a NULL.

    Un right outer join est vraiment proche de la solution mais dans ce cas tous les tuples héritent des données concernées par quelques-uns.

    C'est assez incroyable ; problème de conception ??

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 084
    Points : 30 833
    Points
    30 833
    Par défaut
    Quelque chose comme cela répondrait au besoin que tu exprimes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT p.id
      , p.nom
      , p.tel
      , s.infosup
    FROM personnes AS p
      LEFT JOIN
        info_supp AS s
        ON p.id = s.id
    ;
    A moins qu'il y ait une information que tu n'as pas donnée...
    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.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 810
    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 810
    Points : 52 865
    Points
    52 865
    Billets dans le blog
    5
    Par défaut
    Il faut faire autant de jointures externes gauches qu'il y a de rubriques à filtrer de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT p.id, p.nom, p.tel, s1.infosup AS toto, s2infosup AS tutu
    FROM personnes AS p
      LEFT JOIN info_supp AS s1
        ON p.id = s1.id AND info = 'toto'
      LEFT JOIN info_supp AS s2
        ON p.id = s1.id AND info = 'tutu'
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [Débutant] Requête SQL pas si simple (enfin pour moi)
    Par danielpyrenees dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/09/2014, 00h14
  2. requete sql pas executée
    Par emilien-c dans le forum DB2
    Réponses: 8
    Dernier message: 03/08/2011, 09h09
  3. requete sql pas sans résulta
    Par sabrina22 dans le forum Bases de données
    Réponses: 4
    Dernier message: 01/03/2006, 08h18
  4. Réponses: 2
    Dernier message: 04/06/2004, 11h11
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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