我可以使用一些专家建议与MYSQL查询我试图放在一起。MYSQL 4表查询
什么,我想这样做:
我试图创建一个页面,允许用户执行跨多个表的高级搜索。
四个表是:
members, profiles, skills, genre
Members:
*********************************
id | member_id | login | zipcode
*********************************
Profiles:
*********************************************************************
id | member_id | exp | commitment | practice | gigs | availability
*********************************************************************
Skills:
************************************************************************
id | member_id | lead_vocals | background_vocals | guitar | bass| drums
************************************************************************
Genre:
********************************************************************************
id | member_id | alternative | classic_rock | modern_rock | blues | heavy_metal
********************************************************************************
Skills and Genre represent check box values checked or not (1 or 0)
搜索表单将是一系列的复选框和下拉菜单,将允许用户指定要搜索的具体项目。
我需要什么帮助:
我需要帮助想出把这个查询起来的最佳方式。我一直在阅读关于联接,联盟,子查询和派生表。我可以做一些基本的查询,并得到例如部分数据:
SELECT members.member_id FROM members LEFT JOIN skills ON members.member_id = skills.member_id WHERE skills.leadvocals = 1
不过,我只是不能似乎环绕把他们放在一起我的头。
An example of the search criteria would look something like this:
A user fills out the form and wants to search for all members with (members table) zipcode = 11111 OR zipcode = 22222 (profiles table) commitment = ANY, practice = ANY, gigs = 1, availability = ANY (skills table) lead_vocals = 1 and lead_guitar = 1 (genre table) alternative = 1, modern_rock = 1, heavy_metal = 1
注意我已经有逻辑来计算邮政编码距离并返回范围内的邮政编码列表。
在一天结束时,查询只需返回member_id结果列表并从符合条件的成员表登录。
我不是在找人提供那个答案(尽管我不介意这个答案:))通过试图找出自己的想法,我学得更好,但我需要一些帮助入门。
在此先感谢。
感谢您的详细解释和快速响应。这很好。 – JimmyF 2014-12-03 16:23:29