mysql - Knex.js : How to select columns from multiple tables?

标签 mysql query-builder knex.js

示例查询,

SELECT a.driverID, a.dCarID, a.dDeviceID, b.carRegiNum FROM driverProfile a, carProfile b WHERE a.dManagerID = 7 AND b.carID=a.dCarID

查询在 MySQL 上运行良好。 driverProfile 和 carProfile 是两个独立的表。 如果您需要更多说明,请发表评论。我被困在这里。

感谢您的帮助。谢谢。

最佳答案

原始查询(分成行以便我们阅读[提示])

SELECT a.driverID, a.dCarID, a.dDeviceID, b.carRegiNum 
FROM driverProfile a, carProfile b 
WHERE a.dManagerID = 7 AND b.carID=a.dCarID

第 1 步,连接语法(修复它!)

25 多年前,SQL 连接最佳实践被重新定义,我们不再在表名之间使用逗号。 就停止吧...拜托! 无论如何你都不能在 Knex.js 中做到这一点....所以最好习惯它。首先修复连接语法:

SELECT a.driverID, a.dCarID, a.dDeviceID, b.carRegiNum 
FROM driverProfile a
INNER JOIN carProfile b ON b.carID=a.dCarID
WHERE a.dManagerID = 7

第二步,别名(不是)

Knex 似乎也不容易做别名,所以用表名替换:

SELECT driverProfile.driverID, driverProfile.dCarID, driverProfile.dDeviceID, carProfile.carRegiNum 
FROM driverProfile
INNER JOIN carProfile ON carProfile.carID=driverProfile.dCarID
WHERE driverProfile.dManagerID = 7

第 3 步,“Knexisfy”查询

knex.select(['driverProfile.driverID', 'driverProfile.dCarID', 'driverProfile.dDeviceID', 'carProfile.carRegiNum' ])
.from('driverProfile')
.innerJoin('carProfile','carProfile.carID','driverProfile.dCarID')
.where('driverProfile.dManagerID',7)
.then(function(output){
    //Deal with the output data here 
});
  1. http://knexjs.org/#Builder-select
  2. http://knexjs.org/#Builder-from
  3. http://knexjs.org/#Builder-innerJoin
  4. http://knexjs.org/#Builder-where
  5. http://knexjs.org/#Interfaces-then

关于mysql - Knex.js : How to select columns from multiple tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47077203/

相关文章:

node.js - 错误: Transaction rejected with non-error: undefined

javascript - 无法捕获 knex 交易拒绝

mysql - 如何从批量数据中的mysql列中删除所有非数字字符

mysql - 如何在 MySQL 中使用 group by 获取跨组的高值和低值?

MySQL JOIN 使数据库列名发生冲突

Scala isDefined 获取 None 值,即使它有值

jquery - 如何在新闻源中加载更多帖子而不加载之前加载的帖子?

mysql - 将 SQL 查询转换为查询构建器 Laravel

php - 订单日期查询,语法错误

javascript - 使用 knexjs 将数据插入 sqlite 时遇到问题