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 27/04/2011, 17h16   #1
Invité de passage
 
Homme guillaume
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme guillaume

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
Par défaut Liste d'amis identiques

Bonjour.

J'ai une table listant les utilisateurs d'un réseau social fictif, avec la liste de leurs amis. Chaque relation entre deux utilisateurs est répertoriée deux fois (dans les deux sens).
Dans l'exemple ci dessous :
0 est ami avec 1, 2 et 3
1 est ami avec 0
2 est ami avec 0 et 3
3 est ami avec 0 et 2


ID_utilisateur ----- Ami_de_l'utilisateur
0-------------------1
0-------------------2
0-------------------3
1-------------------0
2-------------------0
2-------------------3
3-------------------0
3-------------------2



Il me faut construire une requête permettant d'obtenir la liste des utilisateurs ayant exactement les mêmes amis que l'utilisateur 2 (par exemple), ni plus ni moins. Ici je veux donc que ma requête me donne l'utilisateur 3.

Je n'arrive pas a gérer le cas ou deux personnes sont amies entre elles, car dans ce cas, bien qu'elles aient les mêmes amis, leur liste diffère (2 est dans la liste de 3, mais 2 n'apparait pas dans sa propre liste)!


Merci
marcelgore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 17h25   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Il suffit de les rajouter dans votre requête :
Code :
1
2
3
union ALL
SELECT id_utilisateur, id_utilisateur
  FROM matable
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 19h48   #3
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
Je ne comprends pas ton union all là !
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 02h33   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Si on prend le cas des utilisateurs 2 et 3, leur liste d'amis sont différentes {0,2} <> {0,3} :
2-------------------0
2-------------------3
3-------------------0
3-------------------2
Maintenant si on les rajoute eux-même dans la liste (dynamiquement avec le union all pour le besoin de cette requête) :
2-------------------0
2-------------------2
2-------------------3
3-------------------0
3-------------------2
3-------------------3
La liste d'amis devient maintenant égale avec {0,2,3}.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 10h06   #5
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
Je parle de ta requête qui n'est pas correct.

Code :
1
2
3
union ALL
SELECT id_utilisateur, id_utilisateur
  FROM matable
Tu fais un union all avec quoi ?
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 11h01   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je parlais bien d'un rajout au jeu de données initial :
Code :
1
2
3
4
5
SELECT id_utilisateur, id_ami
  FROM matable
 union ALL
SELECT id_utilisateur, id_utilisateur
  FROM matable
__________________
Email : http://scr.im/waldar
Waldar 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 08h21.


 
 
 
 
Partenaires

Hébergement Web