根据用户的偏好查找特定记录

时间:2011-09-27 03:28:19

标签: php mysql

给定用户,只选择他感兴趣的项目。

因此,用户表包含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

有关如何实现这一目标的任何想法?我不知道从哪里开始。

我不确定这是否只能在一个简单的查询中完成?

2 个答案:

答案 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';
相关问题