SQL加入与子句仍然显示一部分记录的位置

发布于 2025-01-23 00:57:46 字数 1490 浏览 3 评论 0 原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坏尐絯℡ 2025-01-30 00:57:46

解决问题的解决方案可以通过两种方式:

  1. 使用内部联接而不是左联接(假设制造表中存在所有生产_ID,也存在于工作表中)

     选择md.production_id,manufacture_id,
     pr.product_code,jobs.production_id作为Jobs.job_type
     来自Manufacture_date MD 
     内部加入产品PR 
     在md.production_id = pr.production_id上 
     内部加入工作 
     在md.production_id上= obs.production_id and jobs.job_type = 1 
     其中active ='1'且日期='2021-09-09'订单按product_code desc;
     
  2. 使用Job_type上的相同过滤条件,但在其中的条款以及另一种条件:

     选择md.production_id,manufacture_id,
     pr.product_code,jobs.production_id作为Jobs.job_type
     来自Manufacture_date MD
     内部加入产品PR
     在md.production_id = pr.production_id上
     左加入工作
     在md.production_id = jobs.production_id上 
     其中Active ='1'且日期='2021-09-09' 
     和(jobs.job_type = 1或jobs.production_id为null)
     product_code desc订购;
     

为什么可以通过以下链接中给出的示例代码示例来解释您的错误:

The solution for your problem can be in two ways:

  1. Using Inner Join instead of Left Join (Assuming all production_ids present in Manufacture Table are also present in Jobs Table)

     SELECT md.production_id,manufacture_id,
     pr.product_code,jobs.production_id as jobs,jobs.job_type
     FROM MANUFACTURE_DATE md 
     INNER JOIN PRODUCTS pr 
     ON md.production_id = pr.production_id 
     INNER JOIN JOBS jobs 
     ON md.production_id = obs.production_id AND jobs.job_type=1 
     WHERE active='1' AND date='2021-09-09' ORDER BY product_code DESC;
    
  2. Using same filter condition on job_type but in where clause along with one more condition:

     SELECT md.production_id,manufacture_id,
     pr.product_code,jobs.production_id as jobs,jobs.job_type
     FROM MANUFACTURE_DATE md
     INNER JOIN PRODUCTS pr
     on md.production_id = pr.production_id
     LEFT JOIN JOBS jobs
     on md.production_id = jobs.production_id 
     WHERE active='1' AND date='2021-09-09' 
     AND (jobs.job_type=1 OR jobs.production_id IS NULL)
     ORDER BY product_code DESC;
    

Why you are going wrong can be explained through sample code example given at below link:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=876eb66e340e27b05ae543238b5a88ff

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文