仅选择具有至少一个类似的多对一关系SQL查询修改的用户

时间:2014-05-10 11:46:06

标签: javascript sql select azure where

目前我有sql查询

var sql = 'SELECT * FROM [epicatest].[User] WHERE longitude != \'null\' AND latitude != \'null\' AND id != \'' + userId + '\'';

这将返回: 的 ID: 姓: 名字: 出生日期: 经度: 纬度: 电子邮件:

我还有另一个名为[epicatest]的表。[User_Sports],里面有以下字段: 的 ID: sport_id

在调用上面的查询之前,我有一个存储的数组,其中包含与您(原始用户)相关联的体育ID列表。

当调用查询时,我想扩展它,以便它只选择与您共享至少一个常见运动的人(即他们有(id),VALUES(sport_id) )你也有

下面是我试图做的一个例子,想象源用户的id为1

id,sport_id

1,运动

1,运动b

1,运动c

2,运动

3,运动f

2,运动g

3,运动l

3,运动h

4,运动c

4,运动h

2,运动k

4,运动z

所以,如果我运行'查询',它将仅返回id为2和4的用户,因为他们对运动a和c感兴趣,与我(原始用户)相同。这就是我想要实现的目标,我将如何修改它:

var sql = 'SELECT * FROM [epicatest].[User] WHERE longitude != \'null\' AND latitude != \'null\' AND id != \'' + userId + '\'';

要这样做吗?

记得我有一个阵列可供我使用我的所有(原始用户)sport_ids

感谢。

1 个答案:

答案 0 :(得分:1)

好的,所以你使用的是Azure,所以我使用的是SQL Server语法。另外,我假设表User_Sport有几列名为 user_id sport_id

以下是查询:

SELECT DISTINCT u.* FROM
    [epicatest].[User] u
INNER JOIN
    [epicatest].[User_Sport] p ON u.id = p.user_id
WHERE
    u.longitude != 'null'
AND
    u.longitude != 'null'
AND
    u.id != @user_id
AND
    p.sports_id IN (1, 2, 3) -- this is the list of your sport IDs, comma-seprated
相关问题