SQL: So fragen Sie eine verbundene Tabelle mit einem zusammengesetzten Schlüssel ab, indem Sie Zeilen und Spalten vergleichen
P粉358281574
P粉358281574 2023-09-13 23:28:58
0
1
524

Ich habe eine MySQL-Verbindungstabelle user_connections, die die users-Tabelle mit den folgenden Spalten abbildet: user_from und user_to >, die beide Fremdschlüssel in der users-Tabelle sind.

Meine Logik ist, dass wenn id1 eine Anfrage an id2 sendet, es sich in diesem Fall um eine ausstehende Anfrage handelt. Die Anfrage gilt nur dann als genehmigt, wenn sie von id2 angenommen wird, wodurch die oben genannten Muster (id1, id2) und (id2, id1) in der Tabelle (rotes Kästchen) angezeigt werden.

Meine Frage ist also, wie ich die Tabelle user_connections abfragen kann, damit ich alle ausstehenden Anfragen basierend auf id1

(blaues Feld) abrufen kann.

Ich weiß nicht, wie ich das machen soll. Daher wäre ich für jede Hilfe dankbar. Vielen Dank im Voraus.

P粉358281574
P粉358281574

Antworte allen(1)
P粉287345251

如果您正在查找 user_connections 表定义的所有待处理请求,那么您需要对该表与其自身进行左外连接,如下所示:

架构 (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);

查询#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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage