如何修正SQL关联查询以获取zporeport表的ab_available_date字段
修正后的SQL查询语句
原查询的核心问题是INNER JOIN的关联条件语法错误,仅指定了statusfile.material,没有建立与zporeport表字段的关联等式,导致数据库无法正确匹配两个表的记录,因此无法返回ab_available_date字段。
根据两张表的结构,我们可以通过materialno(物料编号,更具唯一性)或者material(物料名称)来关联,优先推荐使用materialno避免同名称不同编号的匹配错误。
修正后的查询代码
const qr = ` SELECT statusfile.material, statusfile.materialno, statusfile.qty, statusfile.remark_for_delay, zporeport.ab_available_date FROM statusfile INNER JOIN zporeport ON statusfile.materialno = zporeport.materialno -- 修正关联条件,建立字段等式 LIMIT 10; `;
可选优化:使用表别名简化语句
如果觉得表名太长,可以给表设置别名,让代码更简洁:
const qr = ` SELECT sf.material, sf.materialno, sf.qty, sf.remark_for_delay, zpr.ab_available_date FROM statusfile sf INNER JOIN zporeport zpr ON sf.materialno = zpr.materialno LIMIT 10; `;
特殊场景处理
如果需要保留statusfile中的所有记录(即使zporeport中没有匹配的物料编号),可以将INNER JOIN替换为LEFT JOIN,此时没有匹配的记录会返回NULL:
const qr = ` SELECT sf.material, sf.materialno, sf.qty, sf.remark_for_delay, zpr.ab_available_date FROM statusfile sf LEFT JOIN zporeport zpr ON sf.materialno = zpr.materialno LIMIT 10; `;
内容的提问来源于stack exchange,提问作者Jay Mervana
相关产品推荐
相关产品推荐

