Page 1 sur 1

requete de paires dans sql

Posté : 19 févr. 2013, 23:31
par louis1991
Bonjour,
jai un problème pour faire un requête qui demande d'afficher deux noms qui ont en commun un point.
Ma table est -- cette table contient toutes les équipes de la ligue.
DROP TABLE equipe CASCADE CONSTRAINTS;
CREATE TABLE equipe
(
noEquipe numeric(3),
nom char(10),
ville char(10),
PRIMARY KEY (noEquipe)
);

-- cette table contient tous les joueurs de la ligue.
-- l'attribut noJoueur identifie un joueur de manière
-- unique; il garde ce numéro durant toute sa vie dans la
-- ligue.
DROP TABLE joueur CASCADE CONSTRAINTS;
CREATE TABLE joueur
(
noJoueur numeric(3),
nom char(10),
PRIMARY KEY (noJoueur)
);

-- contrat liant un joueur à une équipe pour une durée
-- déterminée. Un joueur peut jouer pour plusieurs équipes
-- dans sa carrière, mais pour une seule équipe à la fois,
-- naturellement
DROP TABLE contrat CASCADE CONSTRAINTS;
CREATE TABLE contrat
(
noEquipe numeric(3),
noJoueur numeric(3),
dateDebut date,
dateFin date,
salaire numeric(3),
PRIMARY KEY (noJoueur,dateDebut),
FOREIGN KEY (noJoueur) REFERENCES joueur,
FOREIGN KEY (noEquipe) REFERENCES equipe
);

-- contient les parties jouées dans la ligue
DROP TABLE partie CASCADE CONSTRAINTS;
CREATE TABLE partie
(
noEquipe1 numeric(3),
noEquipe2 numeric(3),
dateJouee date,
PRIMARY KEY (noEquipe1,noEquipe2,dateJouee),
FOREIGN KEY (noEquipe1) REFERENCES equipe,
FOREIGN KEY (noEquipe2) REFERENCES equipe
);

-- donne les marqueurs d'une partie
-- pour les fins des exercices, prenez note
-- que les attributs nbButs et nbPasses peuvent contenir des
-- valeurs null, parfois les deux en même temps.
DROP TABLE marqueur CASCADE CONSTRAINTS;
CREATE TABLE marqueur
(
noJoueur numeric(3),
datePartie date,
nbButs numeric(3),
nbPasses numeric(3),
PRIMARY KEY (noJoueur,datePartie),
FOREIGN KEY (noJoueur) REFERENCES joueur

et ma requete est :
Retourner les paires de joueurs qui ont signé un contrat avec exactement les mêmes
équipes. Affichez le nom du joueur 1 et le nom du joueur 2, en ordre croissant de nom.
Ne pas afficher la même paire deux fois.

bon jusquà maintenant j'ai fait :

SELECT j1.nom, j2.nom
FROM joueur j1, joueur j2, contrat, equipe
WHERE j1.nojoueur=contrat.nojoueur
AND equipe.noequipe=contrat.noequipe
AND j1.nom!=j2.nom
INTERSECT
SELECT j1.nom, j2.nom
FROM joueur j1, joueur j2, contrat, equipe
WHERE equipe.noequipe=contrat.noequipe
AND j1.nom!=j2.nom

mais il me reste à éliminer les doublons et les paires qui n'ont pas exactement les mêmes équipes... quelqu'un pourrait m'aider svp! :)