Maison > Questions et réponses > le corps du texte
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粉2873452512023-09-14 20:36:03
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 |