Şey başka bir tabloda bulunmayan bu sorguyu gerçekleştirin

1 Cevap php

Bu ben sonra ben ne olduğunu açıklamak için onun çok zor olarak sormak için gerçekten zor bir soru. Burada olsa gider!

SELECT
    Stock.*,
    REPLACE (Description, '&', '&') as Description,
    PRD1.RuleValue AS Price, 
    PRD2.RuleValue AS WasPrice,
    PRD2.RuleValue-PRD1.RuleValue AS Save
FROM 
    Stock INNER JOIN
    StockCategoryMemberList ON StockCategoryMemberList.Sku = Stock.Sku LEFT JOIN 
    PriceRuleDetail PRD1 ON PRD1.Sku = Stock.Sku
        AND PRD1.PriceRule = 'RG'
        AND PRD1.Quantity = 1 LEFT JOIN
    PriceRuleDetail PRD2 ON PRD2.Sku = Stock.Sku
        AND PRD2.PriceRule = 'RRP'
        AND PRD2.Quantity = 1
WHERE StockCategoryMemberList.CategoryCode = 'FIRE'
AND Stock.GeneralStkStatus < 3
ORDER BY StockCategoryMemberList.Order ASC

Bu sorgu çalışıyor ve tüm doğru veri üretir. Ben de olsa "StockMatrixDetail" adı verilen başka bir tablo var. Ben Sku StockMatrixDetail.Sku sütununda var Yukarıdaki sorgu herhangi SKU'larında kaldırmak istiyoruz. Bunu nasıl olduğunu eklemeyi sorgu yukarıda onarabilirsin??

Yani, sözde soru temelde:

Yukarıdaki sorgu gerçekleştirin, ancak Sütun SKU StockMatrixDetail tabloda herhangi SKU'ları dahil değildir.

Bu herhangi bir yardım mutluluk duyacağız.

Saygılarımızla,

Andy

1 Cevap

Ben her zaman bir NOT EXISTS maddesinin ...extremely fast, even more so if StockMatrixDetail.Sku endeksli aracılığıyla yaptık ... hatta masa isabet etmez.

SELECT
    Stock.*,
    REPLACE (Description, '&', '&amp;') as Description,
    PRD1.RuleValue AS Price, 
    PRD2.RuleValue AS WasPrice,
    PRD2.RuleValue-PRD1.RuleValue AS Save
FROM 
    Stock INNER JOIN
    StockCategoryMemberList ON StockCategoryMemberList.Sku = Stock.Sku LEFT JOIN 
    PriceRuleDetail PRD1 ON PRD1.Sku = Stock.Sku
        AND PRD1.PriceRule = 'RG'
        AND PRD1.Quantity = 1 LEFT JOIN
    PriceRuleDetail PRD2 ON PRD2.Sku = Stock.Sku
        AND PRD2.PriceRule = 'RRP'
        AND PRD2.Quantity = 1
WHERE StockCategoryMemberList.CategoryCode = 'FIRE'
AND NOT EXISTS (SELECT 1
                  FROM StockMatrixDetail smd
                  WHERE smd.Sku = Stock.Sku)
AND Stock.GeneralStkStatus < 3
ORDER BY StockCategoryMemberList.Order ASC