我在一起约会网站,我有一个MySQL查询问题。MYSQL选择查询,其中必须存在同一列中的多个条件
这工作:
SELECT *
FROM `user`
, `desired_partner`
, `user_personality`
WHERE dob BETWEEN '1957-05-18' AND '1988-05-18'
AND country_id = '190'
AND user.gender_id = '1'
AND user.user_id = desired_partner.user_id
AND desired_partner.gender_id = '2'
AND user.user_id = user_personality.user_id
AND user_personality.personality_id = '2'
的SQL发现的任何男性(gender_id=1
)与美国之间存在一定的年龄范围ATLEAST人格特质2(可能还有其他个性特征)(country_id=190
)寻找女性(gender_id=2
)。
问题1)我该如何做到这一点,因此它返回那些只有性格类型2,没有其他人格特质?
发现在美国的任何人认为是性格类型2(只)是找女人的22和53之间。
问题2)假设我要找到匹配的性格类型1,性格类型2,和性格类型仅5人。数据库中有14种人格特征,用户可以与其中的任何特征相关联。
查找在美国是22和53也就是人格类型1,2和5(仅)是寻找一个女人之间的任何人。
-------添加更多的信息:
1)发现在美国是22和53是人格类型2(只)是之间的任何人寻找一个女人。
的sql将使用这些表:
用户 desired_partner user_personality
用户表包含了我们希望从数据库中抓取资料信息(USER_ID,递减,电子邮件,密码,出生日期,gender_id ,COUNTRY_ID,STATE_ID,市,ethnicity_id)
在desired_partner表告诉我们什么用户作为合作伙伴寻找(即男,女),主键是desired_partner_id,并含有USER_ID和gender_id
在user_personality表,主键是user_personality_id,并含有USER_ID和personality_id需要
user_personality表,因为为user_id可以用不同的personality_id的相关联。
personality_id可用于查找personality_name在性格表的定义:personality_id,personality_name
这里的问题:
如果会员有个性型和个性型4
这将在数据库中表示为:
user_personality表 user_personality_id = 1 user_id = 1 personality_id = 1 user_id = 4
如果我想查找具有个性类型1的人 - 只有 - 那么下面的查询将无法工作,因为它将包括user_id = 1,其中也有个性类型4。
SELECT * FROM用户,user_personality其中user.user_id = user_personality.user_id和user_personality.personality_id = 1
现在,假设一个成员想要做的人有人格类型1和性格类型5搜索并且没有其他的personality_id与他们的user_id相关联。什么样的SQL看起来像?
不能在没有更多数据洞察的情况下回答这个问题。例如'性格类型'在哪里存储(什么字段!)? – lexu 2010-05-19 09:29:41
还有用户表上的哪个字段表示用户的偏好,例如user.desired_partner_gender是否存在? – Ceilingfish 2010-05-19 09:35:35