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 :

Récupération multiple avec jointure


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut Récupération multiple avec jointure
    Bonjour a tous,

    Je vais essayer de vous expliquer clairement mon probleme :

    pour faire simple j'ai deux tables, voici les principaux champs qui m'intéressent
    CLIENT(#id, nom)
    TELEPHONE(#id, num, type)

    par exemple pour un client : id=1, nom=moi
    dans la table téléphone j'ai
    - id=1, num=01.34.17...., type=fixe
    - id=1, num=061490...., type=portable

    ce que j'essaie de faire avec mon "niveau" en sql, c'est une sorte de
    id | nom | fixe | portable
    1 | moi |01... |06

    mais la je bloque depuis le début d'aprem...
    si quelqu'un avait quelque chose a me proposer, merci d'avance à lui

    bonne soirée

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 292
    Par défaut
    Il faut que tu utilises deux instances de ta table TELEPHONE, l'une pour le fixe, l'autre pour le portable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nom, T.num AS fixe, P.num AS portable
    FROM CLIENT C
      INNER JOIN TELEPHONE T ON C.id = T.id AND T.type = 'fixe'
      INNER JOIN TELEPHONE P ON C.id = P.id AND P.type = 'portable'

  3. #3
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    merci de ta réponse
    j'ai essayé de le réadapter à mon probleme avec la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom, T.num AS fixe, P.num AS portable, M.ville
    FROM CLIENT C
      INNER JOIN TELEPHONE T ON C.id = T.id AND T.type = 'fixe'
      INNER JOIN TELEPHONE P ON C.id = P.id AND P.type = 'portable'
      INNER JOIN Maison M ON C.id = M.id
      where C.nom="moi"
    mais il me retourne rien en résultat...
    est ce normal ? j'ai du faire une erreur car le nom tester contient des numéro

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 292
    Par défaut
    A priori, je ne vois pas d'erreur, à part les guillemets à la place des apostrophes, mais ça n'est pas gênant.

    Peux-tu poster un échantillon de données ?

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    M.id ne serait-il pas plutôt l'identifiant de la maison que du client ?
    N'y aurait-il pas une clé étrangère contenant l'identifiant du client dans la table Maison ? Une colonne du genre 'idClient' ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    voici ma requete de base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT U.IDGWise, U.Nom, U.Prenom,
    T.NumTel AS fixe, U.NumPoste, F.NumTel AS fax,  M.NumTel AS mobile
    FROM Utilisateur U
    	INNER JOIN Telephone T ON U.IDGWise = T.IDUtilisateur AND         T.TypeTel ='Voix' AND T.Technologie <>'GSM' AND T.Resilie='false'
    	INNER JOIN Telephone F ON U.IDGWise = F.IDUtilisateur AND F.TypeTel ='Fax' AND T.Resilie='false'
    	INNER JOIN Telephone M ON U.IDGWise = M.IDUtilisateur AND M.Technologie ='GSM' AND T.Resilie='false'
    celle ci fonctionne a part que j'ai un probleme si un utilisateur possède deux numeros de fixe....
    n'y a -til pas un moyen d'en garder qu'un quand la requete retourne plusieurs enregistrements pour le même utilisateur ????

Discussions similaires

  1. récupération multiple avec une seule requète
    Par rebel29270 dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/12/2011, 19h01
  2. Requete SQL avec jointure multiple
    Par kissskoool dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/01/2008, 01h07
  3. [SQL 2000] Optimisation requête avec jointure multiple
    Par zooffy dans le forum Développement
    Réponses: 5
    Dernier message: 18/09/2007, 15h38
  4. [SQL 2000] Optimisation requête avec jointure multiple
    Par zooffy dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/09/2007, 15h38
  5. UPDATE multiple avec jointure
    Par PyRoFlo dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/05/2006, 15h56

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