MySQL 5.7 中的采购订单数据查询 - 优化后的 SQL 语句

在 MySQL 5.7 中,您可以使用子查询来替代 CTE。以下是修改后的 SQL 查询,用于获取采购订单数据,包括采购订单信息、供应商信息以及物料凭证信息:

SELECT
    cte.*, 
    omh.PostingDate
FROM
    (
        SELECT
            opoh.PurchaseOrder AS purchaseorder,
            opoh.PurchaseOrderType AS purchaseordertype,
            opoh.Supplier AS supplier,
            opoh.PurchasingOrganization AS purchasingorganization,
            opoh.PurchasingGroup AS purchasinggroup,
            opoh.CompanyCode AS companycode,
            opoh.PaymentTerms AS paymentterms,
            opoh.ZZ1_PosttingDate_PDH AS create_time,
            opoh.ZZ1_PosttingDate_PDH AS zZ1PosttingDatePDH,
            opoh.ZZ1_PosttingDate_PDH AS posttingdate,
            opoh.DocumentCurrency AS documentCurrency,
            os.BusinessPartnerName AS supplierName,
            opoh.zz1bedatpdhpdh AS zz1bedatpdhpdh
        FROM
            ods_purchase_order_header opoh
        LEFT JOIN
            ods_supplier os
        ON os.Supplier = opoh.Supplier
        WHERE
            opoh.PurchaseOrderType = 'Z012'
    ) cte
LEFT JOIN
    ods_materialdocument_item omi
ON
    cte.purchaseorder = omi.PurchaseOrder
LEFT JOIN
    ods_materialdocument_head omh
ON
    omi.MaterialDocument = omh.MaterialDocument AND omi.MaterialDocumentYear = omh.MaterialDocumentYear
LEFT JOIN
    vmi_materialdocument vmi
ON
    omi.MaterialDocument != vmi.MaterialDocument AND omi.MaterialDocumentYear != vmi.MaterialDocumentYear
WHERE
    (omi.IsAutomaticallyCreated != 'X' OR omi.IsAutomaticallyCreated IS NULL)
AND
    omi.GoodsMovementType IN (SELECT gmt.GoodsMovementType FROM goodsmovement gmt)
LIMIT 0, 1

该查询语句使用了子查询来模拟 CTE 的功能,并进行了以下优化:

  • 使用子查询 cte 来提取采购订单的基本信息,提高代码可读性和维护性。
  • 使用 LIMIT 0, 1 来限制查询结果为一条数据,提高查询效率。
  • WHERE 子句中使用 IN 子句来筛选 omi.GoodsMovementType,提高查询效率。

注意:

  • 该查询语句假设您拥有以下数据库表:ods_purchase_order_header, ods_supplier, ods_materialdocument_item, ods_materialdocument_head, vmi_materialdocument, goodsmovement
  • 您可能需要根据您的实际需求调整查询语句中的表名和字段名。
  • 该查询语句仅返回一条数据,如果需要返回多条数据,请删除 LIMIT 0, 1

通过以上优化,您可以获得更高效的 SQL 查询语句,用于在 MySQL 5.7 中获取采购订单数据。


原文地址: http://www.cveoy.top/t/topic/pFrt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录