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

SQLite Discussion :

SQLite et jointure


Sujet :

SQLite

  1. #1
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut SQLite et jointure
    Bonjour,

    Je suis sur la création d'une BDD qui mets en corrélation les langues et les pays. Une Langue peut être parlée dans plusieurs pays. Un Pays peut avoir plusieurs langues.
    On est donc dans une relation de Plusieurs-à-Plusieurs.

    Je travaille dans BD Browser for SQLite. J'y ai donc créé la table Langue et la table Pays. Aucun soucis de ce cpoté là.
    Mais comment dois-je mis prendre pour faire la table de jointure ?
    Ex:

    TABLE_LANGUE
    Id_Langue | Langue
    1 | Espagnol
    2 | Français
    3 | Wolof

    TABLE_PAYS
    Id_Pays | Pays
    1 | Espagne
    2 | France
    3 | Colombie
    4 | Sénégal

    JOINTURE
    Id_Langue | Id_Pays
    1 | 1
    1 | 3
    2 | 2
    2 | 4
    3 | 4

    J'ai donc essayé la requête suivante mais ça ne fonctionne pas... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * from JOINTURE
    inner join TABLE_PAYS
    inner join TABLE_LANGUE
    on JOINTURE.Id_Langue=TABLE_LANGUE.Id_Langue
    L'objectif recherché est:
    1 | Espagnol | Espagne
    1 | Espagnol | Colombie
    2 | Français | France
    2 | Français | Sénégal

    et d'avoir la possibilité quand c'est nécessaire de pouvoir avoir comme résultat par la suite:
    1 | Espagne | Espagnol
    3 | Colombie | Espagnol...

    Mrerci beaucoup à tous pour votre aide précieuse ! ;-)

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Pour la première requête, voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select LG.LG_id             
         , LG.LG_nom            
         , PY.PY_nom            
    from  TLANG as LG           
    inner join TJOIN as TJ      
       on TJ.LG_id = LG.LG_id   
    inner join TPAYS as PY      
       on PY.PY_id = TJ.PY_id   
    where LG.LG_id in (1, 2)    
     ;
    Et pour la deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       select PY.PY_id               
            , PY.PY_nom              
            , LG.LG_nom              
       from  TPAYS as PY             
       inner join TJOIN as TJ        
          on TJ.PY_id = PY.PY_id     
       inner join TLANG as LG        
          on LG.LG_id = TJ.LG_id     
       where LG.LG_nom = 'espagnol'

  3. #3
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Merci
    Merci beaucoup...
    Je vais essayer... :-)

  4. #4
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Presque...
    En fait, ça fonctionne que pour le premier pays de chaque langue.

    Il ne sort pas les autres pays parlant la langue.

    Nom : SQLite.png
Affichages : 2969
Taille : 31,2 Ko

    Je crois que le problème réside dans la dernière ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where LG.LG_id in (1, 2)

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Dans ta base de données, il y a d'autres pays dans lesquels on parle les langues 'Abaknon' ou 'Abbey' ?
    Les requêtes proposées par escartefigue répondent exactement aux exemples que tu as présentés, y compris en plaçant des restrictions pour n'obtenir que les lignes présentées par ton jeu d'essai. Donc si tu retires cette clause WHERE, tu devrais voir retournées toute les lignes de tes tables...
    Tu rencontreras le même "problème" avec la deuxième requête proposée par escartefigue ; elle ne retourne que les pays où l'on parle l'espagnol... comme dans ton exmple.
    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.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    il faudrait peut être un peu de sérieux ! en premier message on a des descriptions et noms de tables qui sont totalement différentes du dernier post

    Pourquoi ne pas fournir les bonnes descriptions et tant qu'à faire les données dans un script afin de pouvoir si possible parler la même "langue" ?
    Pourquoi utiliser des alias de table (ce qui est une bonne chose) si ce n'est pour avoir des noms abrégés de ces tables et non le même nom ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse, al1_24.

    Désolé SergioMaster, mais en posant le problème j'ai voulu simplifié les noms de mes tables donc effectivement quand le problème est apparu, j'ai fait un print écran.

    Merci à tous pour vos réponses et votre temps ! :-)

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

Discussions similaires

  1. sqlite c# jointure
    Par yuriyan dans le forum SQLite
    Réponses: 2
    Dernier message: 26/07/2010, 10h42
  2. efficacité et jointure sqlite
    Par marco tonio dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/07/2009, 14h31
  3. SubSonic et Sqlite - Jointures difficiles
    Par Mjm dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/05/2009, 22h55
  4. SQLite et jointures
    Par poncet2 dans le forum SQLite
    Réponses: 1
    Dernier message: 31/07/2007, 06h57
  5. Jointures SQLite ? Help
    Par InDaWinD dans le forum SQLite
    Réponses: 2
    Dernier message: 02/05/2006, 09h22

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