友情系统Sql结构与查询

2024-04-05

我正在编写一个友谊系统,它有两个表。

members

  • id
  • username
  • password

friends

  • id
  • user_id
  • 朋友ID
  • status

假设我想要一个可以选择成员 $userId 的朋友 ID 的查询,如何在一个查询中实现这一点?

我找到了一个解决方案,即进行两次查询。拳头选择好友WHEREuser_id = $userId第二个选择朋友 WHEREfriend_id = $userId然后将它们混合在一个数组中。如果没有其他解决方案,我将使用它。

请问对 SQL 结构和查询有什么想法吗?


Use:

SELECT f.friend_id
  FROM FRIENDS f
 WHERE f.user_id = $user_id
UNION
SELECT t.user_id
  FROM FRIENDS t
 WHERE t.friend_id = $user_id

Using UNION将删除重复项。UNION ALL会更快,但它不会删除重复项。

如果您想为朋友们获取信息MEMBERS表,使用:

SELECT m.*
  FROM MEMBERS m
  JOIN (SELECT f.friend_id 'user_id'
          FROM FRIENDS f
         WHERE f.user_id = $user_id
        UNION
        SELECT t.user_id
          FROM FRIENDS t
         WHERE t.friend_id = $user_id) x ON x.user_id = m.id

BTW: I hope you're using mysql_escape_string http://php.net/manual/en/function.mysql-escape-string.php on the variables, otherwise you risk SQL injection attacks: alt text

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

友情系统Sql结构与查询 的相关文章

随机推荐