2

たとえば、データベースに1つのテーブルがあります:

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),

しかし、私のクエリは、このテーブルに同じ関心を持つユーザーを取得する方法です。この状態では、他のユーザーは冒険、運動、芸術などの同じ興味を持っています。

この 3 つの関心事に別のユーザーがいる場合、彼はフェッチされます。私の質問を理解していただければ幸いです。

この表によると、同じ関心があるため、 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のすべての関心を持つユーザーが得られます。

少なくとも1つの共通の関心が必要な場合は、次のSQLを直接使用してください(Rikesh Shahが提案)。

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