0

私は次のスキームを持っています:

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つのテーブルが含まれています。users1つは、infoの名、姓、およびユーザー名で呼び出されるユーザー情報用です。2番目のテーブルは接続です。列connections.username1connections.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

ありがとう :)

4

1 に答える 1

1
SELECT fbm.username2 AS followed_by_mikha,
   users.first_name,
   users.last_name,       
   users.username      
   FROM connections
   LEFT JOIN users ON users.username = connections.username1

   LEFT JOIN connections fbm ON fbm.username2=connections.username1 and fbm.username1 = 'mikha'

   WHERE connections.username2 = 'maricela'
   ORDER BY users.username DESC LIMIT 10
于 2012-12-23T16:21:02.787 に答える