给定用户,只选择他感兴趣的项目。
因此,用户表包含x,y,z列,其值为1(如果感兴趣)和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 |
需要查找一个查询,该查询将为我提供给定用户(user1)感兴趣的项目列表。
结果应该是(如果选择了用户1):prj1和prj2 结果应该是(如果选择了用户3):prj1和prj3
有关如何实现这一目标的任何想法?我不知道从哪里开始。
我不确定这是否只能在一个简单的查询中完成?
答案 0 :(得分: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....
等等,我希望你有这个主意。
答案 1 :(得分: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';