Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 00h16   #1
Futur Membre du Club
 
Inscription : mai 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 155
Points : 16
Points : 16
Par défaut Problème requête double jointure

Bonjour,
Voici deux tables:

Code :
1
2
3
4
5
6
7
8
 
SITES                             LIENS
------------                    ----------------
id    numeric(5)                 id    numeric(5)
adresse varchar(50)          refsite numeric(5)
datedecreation  Date         lienid numeric(5)
 
La jointure simple se fait donc par id (de sites) = refsite (de lien)
Je veux écrire une requête SQL qui m'affiche : toutes les adresse des liens présents sur le site de id=5.

Je dois donc récupérer tous les liens dans la table LIENS (pour refsite=5).
Tous ces liens auront un lienid.
Avec ce lienid je dois retourner dans la table SITES et chercher l'adresse du site.

Pouvez vous m'aider?

Merci!
alex2746 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 07h58   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
Bonjour,

Lisez ceci (voir tous les tutos sql en fait) : http://sqlpro.developpez.com/cours/sqlaz/jointures/
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 08h25   #3
Futur Membre du Club
 
Inscription : mai 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 155
Points : 16
Points : 16
Bonjour,
Merci pour ta réponse mais j'avais déjà regardé les tutos.

Malgré ça je n'arrive pas à faire cette requête... Je pense devoir faire deux jointures (inner join) mais je n'y arrive pas!
alex2746 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 09h19   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
Qu'avez-vous fait?
Mettez le code + les erreurs ...

Vous n'aurez besoin que d'une seule jointure en inner join.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h19   #5
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 352
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 352
Points : 9 745
Points : 9 745
Citation:
Envoyé par alex2746 Voir le message
Bonjour,
Voici deux tables:

Code :
1
2
3
4
5
6
7
8
 
SITES                             LIENS
------------                    ----------------
id    numeric(5)                 id    numeric(5)
adresse varchar(50)          refsite numeric(5)
datedecreation  Date         lienid numeric(5)
 
La jointure simple se fait donc par id (de sites) = refsite (de lien)
Je veux écrire une requête SQL qui m'affiche : toutes les adresse des liens présents sur le site de id=5.
Je ne comprends pas bien : lienid référence site, si j'ai bien compris. Mais ici ta relation est de type 0-1. Ou alors LIENS.refsite reference SITES.id et LIENS.lienid fait la même chose (avec n lignes dans LIENS pour un LIENS.id donné) ? et que contient LIENS.id dans ce cas ?

Est ce à dire que LIEN est une table de liaison M-N sur SITES -> SITES ?

Merci d'être plus précis ou mieux de poster le DDL des tables pour avoir les relations.
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h35   #6
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 352
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 352
Points : 9 745
Points : 9 745
EDIT : je crois avoir compris (mais ton id dans la table LIENS ne sert strictement à rien - pourquoi l'avoir mis ?)

Donc :
Code :
1
2
3
4
5
 
SELECT S.ADRESSE FROM LIENS L
  JOIN SITES S
     ON S.ID= L.LIENID
WHERE L.REFSITE = 5
Accessoirement, le nommage de tes colonnes est totalement contre-intuitif.

Si en revanche tu veux connaitre les adresses liées à une adresse donnée, tu devras faire une double jointure :
Code :
1
2
3
4
5
6
7
 
SELECT S.ADRESSE FROM SITES S
  JOIN  LIENS L
    ON S.ID= L.LIENID
   JOIN SITES S2
    ON S2.ID = L.REFSITE
WHERE S2.ADRESSE = 'adresse dont on recherche les liens'
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h29.


 
 
 
 
Partenaires

Hébergement Web