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 16/07/2011, 00h21   #1
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Par défaut jointure entre 2 tables

Bonsoir , j ' aimerai pouvoir faire une jointure entre 2 tables.
Je m ' explique , j ' ai une table Transporteur

Code :
1
2
3
4
5
6
CREATE TABLE transporteur
(
  idtransporteur character(30) NOT NULL,
  nomtransporteur character(20),
  CONSTRAINT transporteur_pkey PRIMARY KEY (idtransporteur)
)
qui peut contenir plusieurs Vehicule

Code :
1
2
3
4
5
6
7
8
CREATE TABLE vehicule
(
  idvehicule character(30) NOT NULL,
  vehiculetype character(20),
  maxload integer,
  warehouseloc integer,
  CONSTRAINT vehicule_pkey PRIMARY KEY (idvehicule)
)
Je suis donc parti vers une optique de relation 1-n en créant une table intermédiaire pour récupérer tous les véhicules attaché à un transporteur

Code :
1
2
3
4
5
CREATE TABLE transporteur_vehicule
(
  idtransporteur character(30),
  idvehicule character(30)
)
J ' ai du mal cependant à faire la requête
Code :
SELECT tv.idVehicule,tv.idTransporteur FROM transporteur t,vehicule v, transporteur_vehicule tv WHERE t.idTransporteur = v.idVehicule AND t.idTransporteur ='sthorng';
J ' ai testé ceci , mais je ne récupère rien ...

Merci de votre aide
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 03h32   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Bonjour,


lisez ceci http://sqlpro.developpez.com/cours/sqlaz/jointures/

Comprenez-le et re-essayer votre requete, car vous n'êtes pas loin de la bonne solution !
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 16h09   #3
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Merci de ta réponse

J' ai fait ceci d' après le tuto et ça fonctionne bien :

Code :
1
2
3
4
5
 
SELECT tv.idVehicule,tv.idTransporteur 
FROM transporteur_vehicule tv
INNER JOIN  vehicule v ON tv.idVehicule = v.idVehicule
AND tv.idTransporteur ='sthorng';
Est ce que c ' est une bonne manière de faire ou il y ' a plus performant ?

Merci bien
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/07/2011, 16h27   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Bonjour

juste un commentaire


Même si la requête est correct ; c'est toujours (comment dirais-je) embêtant des chaines de caractères comme clés; en terme d'optimisation, mais aussi de contrôles pour les doublons (quid de la casse ??)


Au fait, les 2 colonnes de ta table "transporteur_vehicule" devraient à priori être toutes les 2 avec une contraintes "NOT NULL"
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 17h22   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Bonjour,

oui votre requête est bien maintenant
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 00h43   #6
Futur Membre du Club
 
Inscription : août 2010
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 65
Points : 17
Points : 17
Merci pour votre aide à vous 2 .
Je vais suivre tes conseils dehorter olivier et procéder aux changements afin d ' opter pour les bonnes pratiques SQL.

Merci encore
j2ee60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h11.


 
 
 
 
Partenaires

Hébergement Web