2

例如,我在数据库中有一张表:

INSERT INTO `myintrest` (`id`, `intrest`, `memberId`) VALUES
(32, 'Exercise', 9),
(33, 'Adventure', 5),
(34, 'Exercise', 5),
(35, 'Art', 5),
(38, 'Adventure', 6),
(46, 'Adventure', 9),
(47, 'Astro-science', 9),
(48, 'Crafts', 9),
(49, 'Fashion & Designing ', 9),
(52, 'Art', 6),
(53, 'Art', 9);

当前用户登录 ID 为“5”。如果我们根据这个用户 ID 从 myintrest 表中获取兴趣,我们会得到结果:

(33, 'Adventure', 5),
(34, 'Exercise', 5),
(35, 'Art', 5),

但我的查询是如何获取在此表中具有相同兴趣的用户。在这种情况下,其他用户也有同样的兴趣,比如冒险、锻炼和艺术。

如果这三个兴趣有另一个用户,那么他将被获取。希望你能理解我的询问。

根据这张表,我想要 member_id=9 因为它有相同的兴趣。

请帮我取这个记录。

4

2 回答 2

3

尝试这样使用子查询,

SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT
 `intrest` FROM `myintrest`  where `memberId` = $loginUserId );
于 2012-08-27T13:22:07.323 回答
0
SELECT `intrest` FROM `myintrest`  where `memberId` = $loginUserId;

这将赋予用户 $loginUserId 的所有兴趣。

//$arr_interests_loginUserId = array of all interests of user $loginUserId

Method 1:

    $condition='';
    foreach( $i=0; $i< count($arr_interests_loginUserId);$i++){
     $condtion.= $arr_interests_loginUserId[$i].' AND ';
    }

    $condtion.= $arr_interests_loginUserId[count($arr_interests_loginUserId)];

    "SELECT `memberId` FROM `myintrest` where $condtion ";

Method 2:

"SELECT `memberId` FROM `myintrest` where ".implode(' AND ', $arr_interests_loginUserId);

这将使您的用户对用户 $loginUserId 感兴趣。

如果您需要至少一个共同兴趣,那么直接使用这个 sql(由 Rikesh Shah 建议):

SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT
 `intrest` FROM `myintrest`  where `memberId` = $loginUserId );
于 2012-08-27T13:53:29.873 回答