问题从mysql表中获取记录

时间:2012-08-27 13:17:46

标签: php mysql

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

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表中获取intrest,我们得到结果:

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

但是我的查询是如何获取该表中具有相同intrest的用户。 在这种情况下,其他用户也喜欢冒险,运动和艺术。

如果这三个人有另一个用户,那么他将被取回。希望你能坚持我的观点。

根据这个表我想要member_id = 9,因为它有相同的intrest。

请帮我拿这张唱片。

2 个答案:

答案 0 :(得分:3)

使用子查询

尝试这样做
SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT
 `intrest` FROM `myintrest`  where `memberId` = $loginUserId );

答案 1 :(得分: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 );