因此,我制定了一个查询来查找在特定时期内所有客户发票中出售的产品。但是,我也想尝试通过使用除法(NOT EXIST)来实现这一点。
这是我到目前为止所实现的。
DECLARE @startdate datetime = '2010-01-01 08:56:01.49';
DECLARE @enddate datetime = '2010-01-02 10:43:17.283';
SELECT Products$.PRODUCT_ID,
Products$.PRODUCT_NAME,
CONCAT(DATENAME(MONTH, @startdate), '''', RIGHT(DATENAME(YEAR, @startdate), 2)) AS StardPeriod,
CONCAT(DATENAME(MONTH, @enddate), '''', RIGHT(DATENAME(YEAR, @enddate), 2)) AS EndPeriod
FROM Products$
WHERE Products$.PRODUCT_ID IN (SELECT InvDetails$.PRODUCT_ID
FROM InvDetails$
WHERE InvDetails$.INVOICE_ID IN (SELECT Invoices$.INVOICE_ID
FROM Invoices$
WHERE Invoices$.INVOICE_DATE BETWEEN @startdate AND @enddate));
答案 0 :(得分:0)
但是在黑暗中是一击,但是我 假设 (就像我在评论中说的那样),您想要EXISTS
,而不是{{1 }}。因此,我会将您的查询重写为:
NOT EXISTS
这实际上可能比嵌套SELECT P.PRODUCT_ID,
P.PRODUCT_NAME,
CONCAT(DATENAME(MONTH, @startdate), '''', RIGHT(DATENAME(YEAR, @startdate), 2)) AS StardPeriod,
CONCAT(DATENAME(MONTH, @enddate), '''', RIGHT(DATENAME(YEAR, @enddate), 2)) AS EndPeriod
FROM Products$ P
WHERE EXISTS (SELECT 1
FROM Invoices$ I
JOIN InvDetails$ ID ON I.INVOICE_ID = ID.INVOICE_ID
WHERE I.INVOICE_DATE BETWEEN @startdate AND @enddate
AND ID.PRODUCT_ID = P.PRODUCT_ID);
子句的效果更好。
答案 1 :(得分:0)
我认为/*Will check if the whole page is loaded*/
$(document).ready(function() {
/*The value="Apply Promo" will be changed after everything is loaded*/
$('input#btn_promo').attr('value','Apply Promo Code');
});
是执行此操作的非常合适的方法:
JOIN