我有一个文本输入,在键入时我想更新相邻选择字段中的选项。
我的数据库中有这两个表:
模型:
ID modelName brandID
1 NA140 3
1 SRL 1
1 SRS 1
1 SRF 1
1 SMS 2
1 SMU 2
品牌:
ID brandName
1 Samsung
2 Bosch
3 Panasonic
在选择字段中,我想列出品牌表中的所有 brandNames
,但列出它们与文本输入相关。
因此,如果键入“SR”,modelNames
的顺序将是 SRF、SRL、SRS、SMU、SMS、NA140,然后相应的 brandName
将作为结果抓取但仅列出每个品牌一次。
我将如何编写此查询?
我有这个基本想法,我认为这是我需要的...
JOIN models & brands ON m.brandID = b.ID
MATCH modelName to string%
SELECT UNIQUE brandName
最佳答案
我能想到的唯一方法是首先在与用户输入匹配的位置进行选择,获取这些结果,然后在它出现的位置再次进行选择,并将结果与联合组合,如下所示:
(SELECT `t1`.`modelName`, `t1`.`brandID`,`t2`.`brandName` FROM `Models` as `t1` INNER JOIN `Brands` AS `t2` ON `t1`.`brandID`=`t2`.`ID` WHERE `t1`.`modelName` LIKE 'SR%' ORDER BY `t1`.`modelName`,`t2`.`brandName`)
UNION
(SELECT `t1`.`modelName`, `t1`.`brandID`,`t2`.`brandName` FROM `Models` as `t1` INNER JOIN `Brands` AS `t2` ON `t1`.`brandID`=`t2`.`ID` WHERE `t1`.`modelName` NOT LIKE 'SR%' ORDER BY `t1`.`modelName`,`t2`.`brandName`)
可能有更有效的方法来做到这一点,这是我去商店之前想到的:)
关于mysql - 棘手的 MySQL JOIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748356/