mysql - 棘手的 MySQL JOIN 查询

标签 mysql sql join

我有一个文本输入,在键入时我想更新相邻选择字段中的选项。

我的数据库中有这两个表:

模型:

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/

相关文章:

php - 如何在 PHP 中比较 MySQL 日期时间和 JqueryUI 日期选择器?

sql - 使用 toChar 在 W3C XML Schema xs :dateTime type format 中输出日期

sql - 尝试执行非事务性更新表时出现 Hive 错误

mysql - 如何将多个详细信息行的列汇总到单个列中?

sql - SQL合并中发生无意的交叉连接

javascript - 创建动态字符串模板的最佳方法是什么

mysql - 自动将一个账户的RDS中的Mysql数据复制到另一个账户的RDS

php - fatal error : Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

mysql - AWS Elastic Beanstalk 和 Neo4j

mysql - 在sql中查找两个组合列的平均值