2012-08-27 86 views
2

抓取記錄我在數據庫中的一個表,例如: 問題從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」。如果我們從intrest表myintrest根據該用戶標識獲取我們得到的結果是:

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

但我的疑問是如何獲取其在此表相同intrest用戶。 在這種情況下,其他用戶具有相同的興趣,如冒險,運動和藝術。

如果這三個intrest有另一個用戶,那麼他將獲取。希望你能忍受我的查詢。

根據這張表我想member_id = 9,因爲它有相同的intrest。

請幫我找回這個記錄。

+0

必須在用戶共享所有相同利益,或至少一個?例如,用戶6是否有資格,因爲他也有冒險? – Bort

+0

@Balraj:你是否希望至少有一個共同的興趣或其他用戶的每個興趣都應該被要求用戶的興趣? –

回答

3

嘗試像這樣使用子查詢,

SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT 
`intrest` FROM `myintrest` where `memberId` = $loginUserId); 
+0

它會給每個成員至少有一個共同的利益 –

+0

是的我使用它,但它返回所有成員id,因爲如果任何一個匹配任何登錄用戶intrest然後它的顯示。我只需要那些具有相同意義的記錄,意味着其他人在這張表中具有相同的意義。 任何解決方案我只得到9 member_id因爲9成員id有那些intrest。他的成員也有其他intrest,但包括登錄人intrest所以這也是這個用戶的工作。希望你瞭解我的問題。我問我的其他朋友,但沒有人有任何解決方案。請幫我解決這個問題。 謝謝 Balraj –

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沙阿建議):

SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT 
`intrest` FROM `myintrest` where `memberId` = $loginUserId); 
+1

爲了使WHERE語句,使用$ condtion = implode('AND',$ arr_interests_loginUserId);更詳細的 –

+0

是的,我們可以通過這種方式來做... @ DirkMcQuickly。 –

+0

謝謝大家,我一樣的時間。感謝lottt –