2011-05-02 31 views
0

数据我有2个表:参加与MySQL和PHP

 TABLE USER 
ID | USER | PASSWORD 
1 | john | xxx 
2 | max | xxx 
3 | carl | xxx 
4 | marie | xxx 
5 | andy | xxx

TABLE FRIENDS ID | iduser | idfriends 1 | 1 | 2 2 | 1 | 3 3 | 2 | 1 4 | 2 | 4 5 | 2 | 5 6 | 2 | 3 7 | 3 | 1

我怎样才能让所有的朋友约翰?

+1

在标题你说MySQL和PHP;你的标签是mysql和sql ...那么,哪些标签是你的标签? ;) – Marco 2011-05-02 13:35:09

+1

请注意不要以纯文本形式在您的数据库中存储密码;) – Marco 2011-05-02 13:45:02

回答

3

试试这个:

SELECT u.* FROM FRIENDS f 
INNER JOIN `USER` u 
ON f.idfriends=u.id 
WHERE f.iduser=1; 
+0

只给用户的ID可能不是最有帮助的。我想你必须做一个子查询来知道需要使用的id – 2011-05-02 13:47:27

+2

@John不需要子查询,只需'INNER JOIN User u2 ON f.iduser = u2.ID WHERE u2.User ='john ' – Phil 2011-05-02 13:50:31

+1

@约翰:是的,但可能他会显示一个用户列表(从USERS表中选择),并且在选择一个用户(他已经知道他的ID)后,他会向他的朋友展示...... – Marco 2011-05-02 13:51:57

0
SELECT u.user 
FROM user u 
LEFT JOIN friends f ON u.id=f.idfriends 
WHERE f.iduser = (SELECT id FROM user WHERE user = 'john'); 
+1

而不是使用子查询,只需使用不同的别名简单加入'User'会更有效率。 – Phil 2011-05-02 13:39:01

+0

和Harry Joy一样的问题。为什么downvote? – 2011-05-02 13:39:29