mysql - 如何修复此示例的 SQL 语法?
问题描述
代码应显示 3 个表的 LEFT JOIN 的结果,但事实并非如此,并在下面给出错误消息。
Reactjs:代码获取值并将其显示在 console.log 中
import React,{useEffect, useState} from 'react'
import Axios from "axios";
export default function DisplaySell() {
function sellfunc(){
console.log("function call")
Axios.get('http://localhost:3001/getselldatatable').then((response) => {
console.log("TABLE DATA",response)
});
}
return (
<div>
here
<button onClick={sellfunc}>Sell</button>
</div>
)
}
Nodejs:代码从 3 个不同的表中获取所有记录
let getsalessql = `SELECT * FROM sales where CustomerEmail=? AND SellSession=(select max(SellSession) from sales)`;
var idMedicineDatabase;
var EmailID;
app.get("/getselldatatable", (req, res) => {
EmailID="test2@gmail.com";
db.query(getsalessql,[EmailID],(err, result1) => {
if (err) {
console.log(err);
} else {
console.log(result1)
let getsalessql2 = "(SELECT * FROM medicinedatabase as m LEFT JOIN inventory as i ON m.idMedicineDatabase = i.idMedicineDatabase LEFT JOIN sales as s ON m.idMedicineDatabase = s.idMedicineDatabase) where m.idMedicineDatabase IN (${result1.map(r => r.idMedicineDatabase).join(',')})";
db.query(getsalessql2,(err, resultnew) => {
if (err) {
console.log(err);
} else {
console.log(resultnew)
//console.log(resultnew)
res.json(resultnew)
}
});
}
});
});
MySQL 错误信息
解决方案
看起来您在 SQL 字符串中使用了模板文字语法……只是您使用的是双引号,而不是模板文字所需的反引号。试试这个:
let getsalessql2 = `
SELECT *
FROM medicinedatabase as m
LEFT JOIN inventory as i
ON m.idMedicineDatabase = i.idMedicineDatabase
LEFT JOIN sales as s
ON m.idMedicineDatabase = s.idMedicineDatabase
where m.idMedicineDatabase IN (
${result1.map(r => r.idMedicineDatabase).join(',')}
)`;
使用除反引号以外的任何内容,${result1.map(r => r.idMedicineDatabase).join(',')}
都不会按照您可能想要的方式替换。
*编辑:正如@strawberry 在评论中提到的那样,select...from
原始查询中的子句周围的括号不应该真的存在......我已经删除了它们。
*Edit2:模板文字允许多行字符串;缩进 SQL 以提高可读性。
推荐阅读
- php - 在 Windows 上使用 vhost、htaccess 访问网站
- javascript - 使用 Openweathermap API 未找到 http 错误
- java - 删除同步和异步实现之间共享的重复代码
- linux - 内核模式下会发生页面错误吗?
- php - 如何按日期对包含通过合并 get_posts 结果创建的 WP post 对象的数组进行排序?
- swift - UITabBar 和 UINavigationBar 颜色不正确
- python - 使用 Web 提供程序复制本地 Web 开发环境(Python、Flask、SQL)的最简单方法?
- regex - 意大利语标签的正则表达式
- mysql - MySQL将来自两个不同表的id依赖字段插入第三个表
- ios - 如何从包含特定标题的日历中获取事件?