匹配选择行我有以下查询:所有标准从键值表
select *
from user_interests
join interests using(interest_id)
where tag in('running', 'biking')
and user_id != 1;
注:的in()
值是建立动态使用PHP,所以他们可能是一个值或100个值,每个通过用户浏览器$_GET
传入。
我的user_interests表非常简单,因为它只是interest_id
和user_id
的列表。
CREATE TABLE `user_interests` (
`interest_id` INT(10) UNSIGNED NOT NULL,
`user_id` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`interest_id`, `user_id`)
);
我的兴趣爱好表是一个简单的表格保存不同类型的利益列表(running
,biking
等)
CREATE TABLE `interests` (
`interest_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`tag` VARCHAR(50) NOT NULL,
`category_id` TINYINT(3) UNSIGNED NOT NULL,
PRIMARY KEY (`interest_id`),
UNIQUE INDEX `tag` (`tag`)
);
由于每个用户都可以有很多的利益,我怎么可以搜索具有列表中所有兴趣的用户的数据库。对于上面的查询将是running
和biking
。我的查询只是获得至少有上述之一的人,我该如何做到这一点,以便让用户获得所有查询的兴趣?
因此,如果用户有5个兴趣,并且我通过2并且他们在5的列表中有2个,他们的个人资料应该被返回。如果他们中只有一个通过了,则不应退回配置文件。
这里是一个小提琴:http://sqlfiddle.com/#!9/29ea2
你的小提琴缺少表的用户 –
我没加,因为他们真的有关...我已将其从查询问题中删除。 –
好的,我已经编辑了我的答案,以便我不再使用用户。 –