我有一些桌子来保养鞋子。
Brand ( brand_id, brand_name )
Initial_order table ( brand_name, shoe_count )
Sales table ( shoe_id, brand_name, purchase_date, returned_Date)
现在在我们的系统中如果return_date为null,我们假设销售已完成。
现在查询我正在寻找的是:
Return brand names which are completely sold out
,即应该没有鞋子返回(Sales.return_Date == NULL)并且所有鞋子都已售出。
这是逻辑
select brand_id
from brand
where brand_name NOT IN ( select brand_name
from Sales
where returned_Date IS NOT NULL)
此查询会返回所有尚未退回的品牌,但是,我需要验证的其他条件是 - > Initial_order.shoe_count
= count of brand entries in Sales table
我很难理解如何在上一个查询中连接这个额外的检查。
答案 0 :(得分:1)
您的架构似乎存在一些问题,例如:您使用brand_name
而不是ID来加入表格,而ID始终是唯一的。无论如何,我认为你可以通过将Brand
表连接到两个子查询来解决这个问题。第一个子查询查找Initial_order
表中的品牌条目数,第二个子查询查找未返回的条目数。因此,我假设具有匹配计数的给定品牌意味着所有订单都已成功完成。
SELECT t1.*
FROM Brand t1
INNER JOIN
(
SELECT brand_name, SUM(shoe_count) AS shoe_count
FROM Initial_order
GROUP BY brand_name
) t2
ON t1.brand_name = t2.brand_name
INNER JOIN
(
SELECT
brand_name,
SUM(CASE WHEN returned_Date IS NOT NULL THEN 1 ELSE 0 END) AS shoe_count_sales
FROM Sales
GROUP BY brand_name
) t3
ON t1.brand_name = t3.brand_name
WHERE t2.shoe_count = t3.shoe_count_sales
答案 1 :(得分:1)
您可以在.then
子句中执行此操作:
gridService.getGridConfig()
.then(function(data) {
////
// code dependent on server response
////
});