我在一起約會網站,我有一個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