SQL : Comment interroger une table jointe avec des clés composites en comparant les lignes et les colonnes
P粉358281574
P粉358281574 2023-09-13 23:28:58
0
1
523

J'ai une table de connexion Mysql user_connections qui mappe la table users avec les colonnes suivantes : user_from et user_to >, qui sont toutes deux des clés étrangères dans la table users.

Ma logique est que si id1 envoie une requête à id2, dans ce cas ce sera une requête en attente. La demande ne sera considérée comme approuvée que si elle est acceptée par id2 qui donnera les modèles ci-dessus (id1, id2) et (id2, id1) dans le tableau (encadré rouge).

Ma question est donc de savoir comment interroger la table user_connections afin que je puisse obtenir toutes les demandes en attente basées sur id1

(case bleue)

Je ne sais pas comment faire ça. Toute aide serait donc appréciée. Merci d'avance.

P粉358281574
P粉358281574

répondre à tous(1)
P粉287345251

Si vous recherchez toutes les requêtes en attente définies par une user_connections table, alors vous devez effectuer une jointure externe gauche entre cette table et elle-même, comme ceci :

Architecture (MySQL v5.7)

create table user_connections (
  user_from int,
  user_to int,
  primary key(user_from, user_to)
  );
  
  insert into user_connections(user_from, user_to) values(1, 2);
  insert into user_connections(user_from, user_to) values(2, 1);
  insert into user_connections(user_from, user_to) values(67, 1);
  insert into user_connections(user_from, user_to) values(68, 1);
  insert into user_connections(user_from, user_to) values(69, 1);
  insert into user_connections(user_from, user_to) values(70, 1);

Requête n°1

select uc1.user_from, uc1.user_to from
user_connections uc1 left join
user_connections uc2 on uc2.user_from = uc1.user_to and uc2.user_to = uc1.user_from
where uc2.user_from is null;
user_from user_to
67 1
68 1
69 1
70 1
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal