【发布时间】:2012-08-02 15:56:14
【问题描述】:
我有 2 个表,第一个称为 friendship,第二个称为 user,详细信息如下
friendship表字段:
uid1, uid2
user 表字段:
uid, username, primary_email, f_name, m_name, l_name, avatar, avatar_path
想法是当uid1 on friendship 表例如=1 时从user 表中获取所有朋友的详细信息,以下查询是这个想法的最佳实践吗?
SELECT
u.uid,
u.username,
u.primary_email,
u.f_name,
u.m_name,
u.l_name,
u.avatar,
u.avatar_path
FROM friendship AS f
LEFT JOIN user AS u ON f.uid2=u.uid
WHERE f.uid1=1
最佳实践是对单个查询使用联接还是使用 2 个查询,一个从友谊表中提取 id,第二个从用户表中提取每个 id 的详细信息,例如:-
SELECT uid2 from friendship WHERE uid1 =1
这个查询给了我 ids 2,4,6,5,9 的数组然后我在下面的查询中使用它
SELECT * from user WHERE uid IN (2,4,6,5,9)
最佳做法是什么?
【问题讨论】:
-
你想知道有朋友的用户的名字和朋友的名字吗?还是只有朋友的名字?
-
@bluefeet 我想提取我朋友的所有详细信息