私は次のスキームを持っています:
CREATE TABLE IF NOT EXISTS `connections` (
`username1` varchar(15) NOT NULL,
`username2` varchar(15) NOT NULL,
PRIMARY KEY (`username1`,`username2`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `connections` (`username1`, `username2`) VALUES
('guy', 'maricela'),
('maricela', 'guy'),
('mikha', 'guy');
CREATE TABLE IF NOT EXISTS `users` (
`username` varchar(15) NOT NULL,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `users` (`username`, `first_name`, `last_name`) VALUES
('maricela', 'Maricela', 'Ros'),
('mikha', 'Michael', 'Samuel'),
('guy', 'Guy', 'Marquez');
スキームには2つのテーブルが含まれています。users
1つは、infoの名、姓、およびユーザー名で呼び出されるユーザー情報用です。2番目のテーブルは接続です。列connections.username1
はconnections.username2
フォローするものであり、フォローされるものです。ユーザーをフォローしているユーザーのリストを出力し、maricela
結果ごとに、結果のユーザーがユーザーをフォローしているかどうかを確認しますmikha
。
次のクエリを使用しますが、結果の後にが続くかどうかを確認しても機能しmikha
ません。
SELECT followed_by_mikha.username AS followed_by_mikha,
users.first_name,
users.last_name,
users.username
FROM connections
LEFT JOIN users ON users.username = connections.username1
LEFT JOIN users followed_by_mikha ON (connections.username1 = 'mikha' AND connections.username2 = users.username AND connections.username2 = followed_by_mikha.username)
WHERE connections.username2 = 'maricela'
ORDER BY users.username DESC LIMIT 10
ありがとう :)