mysql sql select и внутреннее соединение для имен подписчиков / подписчиков
Я изо всех сил пытался придумать, как выбрать все имена подписчиков и имена подписчиков для каждого подписчика. Мои таблицы выглядят следующим образом
CREATE TABLE person
(
id int(10) auto_increment NOT NULL PRIMARY KEY,
name varchar(100) NOT NULL DEFAULT '',
);
INSERT INTO person (name) VALUES ('John');
INSERT INTO person (name) VALUES ('Alice');
INSERT INTO person (name) VALUES ('Eve');
INSERT INTO person (name) VALUES ('Edgar');
INSERT INTO person (name) VALUES ('Malorie');
CREATE TABLE follows
(
id int(10) NOT NULL DEFAULT '0',
fid int(10) NOT NULL DEFAULT '0'
);
INSERT INTO follows (id,fid) VALUES (1,2);
INSERT INTO follows (id,fid) VALUES (1,3);
INSERT INTO follows (id,fid) VALUES (1,4);
INSERT INTO follows (id,fid) VALUES (2,1);
INSERT INTO follows (id,fid) VALUES (2,5);
INSERT INTO follows (id,fid) VALUES (3,2);
INSERT INTO follows (id,fid) VALUES (5,2);
INSERT INTO follows (id,fid) VALUES (5,1);
До сих пор я придумал подобное утверждение, но, очевидно, оно не работает должным образом
SELECT person.name FROM person INNER JOIN follows ON (person.id = follows.id)
Как я могу сделать запрос, который выбирает оба, folower и folowee имена его следующих в одном запросе?
Ожидаемый результат должен быть таким
+---------+---------+
| folower | folowee |
+---------+---------+
| John | Eve |
| John | Alice |
| John | Malorie |
| Alice | John |
| Alice | Eve |
| Eve | Alice |
+---------+---------+
1 ответ
Решение
Вы можете использовать соединение от лица дважды, один для человека и один для имени последователя
SELECT person.name , follower.name
FROM person
INNER JOIN follows ON (person.id = follows.id)
INNER JOIN person as follower on follows.fid = follower.id