0

我的数据库中有两个表。表A是USERS,表B是关系,下面是它们的列USERS(username, avatar,specialty)和RELATIONS(username1, username2, reldir) RELATIONS存储的是用户之间的关系,即如果username1跟随username2,reldir = F,如果他们都互相跟随,reldir=FB,反之亦然,这部分工作得很好,但是

我需要查询这些表,以便我返回来自 USERS 的用户列表,例如用户 A 不关注但具有与 A 相同的专业...

我试过这个,但它不能很好地工作......

$spec = 用户 A 的特长

SELECT a.username, a.avatar, a.specialty FROM users a, relations b WHERE a.username!=b.username2 AND (b.reldir!='F' OR b.reldir!='FB') AND a.speciality ='$spec'

对我的查询在逻辑上似乎是正确的,但我可能是错的。我需要帮助

4

1 回答 1

0

您需要为表添加一些键,因为您有两个不同的表并且它们没有链接。

例如,表USERS

id (as primary_key), username, avatar, specialty

RELATIONS

user_id, username2, reldir

user_id - 它是表 USERS 中的字段“id”(而不是您的“username1”)

然后您将能够创建这样的查询:

SELECT a.* 
FROM users a, relations b 
WHERE a.id = b.users_id 
  AND (b.reldir != 'F' OR b.reldir != 'FB') 
  AND a.speciality = '$spec'

ps:如果我以正确的方式理解你的问题)

于 2013-06-13T13:58:05.793 回答