使用MySQL帮助连接和过滤多个表

使用MySQL帮助连接和过滤多个表,mysql,Mysql,我在一个评论网站上工作。基本上,您可以选择位置和业务类型,并可以选择按各种业务属性筛选搜索结果。这里有五张桌子: 企业 身份证 名称 位置ID 位置 位置ID 地点名称 陈述 属性 属性ID 属性名称 属性值 属性值 父属性ID 属性值 业务属性 身份证 属性ID 属性值 因此,我需要的是根据属性值计算出用于(连接?)在特定位置获取业务的查询 例如,我想在圣莫尼卡找到一个具有以下属性的理发师: 价格:便宜 开放周末:是的 剪女人的头发:是的 这些属性存储在attributes和Attribute

我在一个评论网站上工作。基本上,您可以选择位置和业务类型,并可以选择按各种业务属性筛选搜索结果。这里有五张桌子:

企业 身份证 名称 位置ID

位置 位置ID 地点名称 陈述

属性 属性ID 属性名称

属性值 属性值 父属性ID 属性值

业务属性 身份证 属性ID 属性值

因此,我需要的是根据属性值计算出用于(连接?)在特定位置获取业务的查询

例如,我想在圣莫尼卡找到一个具有以下属性的理发师:

价格:便宜 开放周末:是的 剪女人的头发:是的

这些属性存储在attributes和AttributeValue表中,并链接到BusinessAttributes表中的业务

假设我从搜索表中获得了这些详细信息:

地点ID=5,价格=便宜且开放的周末=是,海关\女性\头发=是

我需要构建查询以返回与此位置和属性匹配的业务


提前感谢您的帮助,我认为StackOverflow非常棒。

考虑到您的数据需求,您可能是无模式面向文档数据库的完美人选。在.NETRocks()的最近一集中,MichaelDirolf谈到了他的项目

据我所知,您可以将每个业务实体及其所有相关属性(LocationID、Price、Open_Weekend、Customs_Women_Hair等)存储在数据库中。存储在存储中的每个实体可以具有不同的属性组合,因为没有模式。这本机完成了您试图对属性和属性值表执行的操作

要搜索数据库,只需要求它查找具有所需的特定键和值集的所有实体。没有复杂的连接,也没有性能损失。您所做的正是无模式、基于文档的数据库的设计目标

迈克尔·迪洛夫:是的,我认为很多正在转换的人都有点像我们使用MongoDB那样使用关系数据库。
理查德·坎贝尔:对。
Michael Dirolf:因此,有一个列,一个列键和一个单独的列值,并以这种方式插入内容,以便在模式中完成,以及诸如此类的疯狂事情……
理查德·坎贝尔:是的,现在在反思中,我突然意识到我只是描述了你的完美客户,一个像他们说的那样滥用SQL Server的家伙。我们正走在这条有趣的道路上,你一开始就不应该在这里

如果您继续沿着构建关系属性/值存储的道路走下去,您的性能将受到由此产生的组合属性爆炸的影响