【发布时间】:2014-02-19 09:34:25
【问题描述】:
我有搜索查询的问题,我必须即时构建以从数据库中返回记录。
我有 2 个表:adds andadds_filters`。为了简单起见,我使表格添加的时间比实际短,删除了一些(不相关的)字段
我的表结构:
CREATE TABLE IF NOT EXISTS `adds` (
`addid` int(11) NOT NULL AUTO_INCREMENT,
`memberid` int(11) NOT NULL,
`isnew` int(11) NOT NULL,
`catid` int(11) NOT NULL,
`manufacturerid` int(11) NOT NULL,
`modelid` varchar(255) DEFAULT NULL,
`colorid` int(11) DEFAULT NULL,
`geographicareaid` int(45) NOT NULL,
`addtypeid` varchar(45) NOT NULL,
`addcreatedon` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`addvalidfrom` date NOT NULL,
`addvaliduntil` date NOT NULL,
`addcreatedfromip` varchar(255) NOT NULL,
`yearofmanufacturing` varchar(255) DEFAULT NULL,
`monthofmanufacturing` int(11) DEFAULT NULL,
`hoursused` int(11) DEFAULT NULL,
`cc2` int(11) DEFAULT NULL,
`horsepowers` int(11) DEFAULT NULL,
`metalic` tinyint(4) DEFAULT NULL,
`isdamaged` tinyint(4) DEFAULT NULL,
`price` float DEFAULT NULL,
`hasvat` tinyint(4) NOT NULL,
`canbenegotiated` tinyint(4) DEFAULT NULL,
`addtitle` varchar(255) DEFAULT NULL,
`addtext` text NOT NULL,
`youtubevideo` varchar(255) DEFAULT NULL,
`visible` tinyint(4) DEFAULT NULL,
`ff1` varchar(255) DEFAULT NULL,
`ff2` varchar(255) DEFAULT NULL,
`ff3` varchar(255) DEFAULT NULL,
`ff4` varchar(255) DEFAULT NULL,
PRIMARY KEY (`addid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=43 ;
CREATE TABLE IF NOT EXISTS `adds_filters` (
`addfilterid` int(11) NOT NULL AUTO_INCREMENT,
`addid` int(11) NOT NULL,
`filterid` int(11) NOT NULL,
PRIMARY KEY (`addfilterid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=45 ;
问题是用户可以为每次添加添加多个过滤器,也就是说,如果
车辆有空调、GPS、可移动驾驶室等...此数据存储在adds_filters。因此,一个添加可以有多个过滤器。
当用户选择 catid 为 1,manufacturerid 为 1 然后用户使用 id 检查过滤器时,查询应该是什么样子
例如 67 和 158?
我更喜欢查看查询,但我不知道如何构建这样的视图。首选视图的原因是,在这种情况下,我将能够使用 select * 而不是复杂的查询...
任何帮助将不胜感激。
【问题讨论】:
-
为清楚起见,请提供
SHOW CREATE TABLE adds;和SHOW CREATE TABLE adds_filters;。如果它太大,你可以post it here -
Alexander,我只是编辑我的帖子,请看一下
-
Here is the fiddle for you 添加一些插入,这样我们就可以获得样本数据,并提供所需的输出(以及您已经尝试过的查询)
-
我在表格中添加数据...请检查。
-
您需要提供链接。每次修改时,小提琴都会发生变化,因此您的小提琴已经有另一个 url :)