2011-09-27 30 views
1

,只選擇項目,他感興趣的查找特定記錄根據給定用戶的用戶的喜好

所以一個用戶表有具有值1(如果有興趣)和X,Y,Z列0(如果不感興趣)

一旦我們得到用戶,我們需要獲得所有具有類似x,y,z值中至少一個的項目。

所以給出:

prj title  | x | y | z | 
__________________________________________ 
prj1   | 1 | 0 | 1 | 

prj2   | 1 | 1 | 0 | 

prj3   | 0 | 0 | 1 | 

和用戶表:

user id  | x | y | z | 
__________________________________________ 

user1  | 1 | 0 | 0 | 

user2  | 1 | 1 | 0 | 

user3  | 0 | 0 | 1 | 

需要找到一個查詢,會給我的,一個用戶(用戶1)有興趣的項目清單。

結果應該是(如果用戶1被選擇):prj1和prj2 結果應該是(如果用戶3被選擇):prj1和prj3

關於如何實現這一點的任何想法?我不知道從哪裏開始。

我不確定這是否可以在一個簡單的查詢中完成?

+2

對於「感興趣的」列,您應該使用BOOLEAN而不是INT。 – Flimzy

+0

如果用戶沒有興趣,你想做什麼? – jswolf19

回答

0

試試這個:

SELECT p.prj_title 
FROM prj AS p 
JOIN users AS s ON (
    (u.x=p.x AND u.x=1) 
    OR (u.y=p.y AND u.y=1) 
    OR (u.z=p.z AND u.z=1) 
) 
WHERE u.user_id='user1'; 
+0

這絕對不會做OP想要的東西... – jswolf19

+0

@ jswolf19:這很可能是我誤解了,或者做錯了,但請詳細說明:) – Flimzy

+0

看看給出的例子,user1將得到所有三個項目,因爲uy = PY – jswolf19

1

還有一個解決辦法只有一個查詢

select p.title 
from prj as p left join user as u on (( 
    (u.x = p.x) && (u.x=1)) || ((u.y = p.y) && (u.y=1.... 

等,以及我希望你有這個想法。

相關問題