如果 table 中不存在行,如何获取另一行的值?

How to get value of another row if row does not exist in table?

我有两个 table,分别命名为 tbl_brandstbl_counter_stock。 在 tbl_brands 中有品牌 ID 和品牌名称的键值对。 tbl_counter_stock 中的列如 brnd_id2000ml1000mlstockstock_date。 每行代表不同库存的利口酒品牌 O型开口, R-收到, S-销售, C-关闭 我想从此 table 中获取每个品牌的期末库存记录,如果此 table 中不存在 C(期末库存)条目,那么我想获取 O(期初库存)那个品牌。如果该品牌的期末库存已经存在,我将获得期初库存和期末库存的两个值。这不是我想要的结果。只有当 C(收盘库存)不存在时,我才想获得 O(开盘库存)。 提前致谢。

    SELECT 
        A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0) bottles,
        B.stock,B.stock_date
        FROM tbl_brands A  
        left OUTER JOIN
        tbl_counter_stock AS B
        on A.BRND_ID=B.BRND_ID 
        AND B.STOCK IN('O','C')
        AND B.STOCK_DATE='2017-01-18'

我认为创建 table:
时解决方案更容易理解 创建一个仅包含 Closing_Stock 的 table (table_C)(WHERE CLAUSE 减少为 B.STOCK='C') 然后从您的 tbl_brands 向左加入您的 table_C 以找到所有缺少收盘库存记录的 brand_ids 并加入您的 tbl_counter_stock (WHERE B.STOCK='O') 以插入缺少的 ID。

CREATE TABLE brand_stock_overview (Key brnd_id(brnd_id))
SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0)  
bottles, B.stock,B.stock_date
FROM tbl_brands A  
LEFT JOIN tbl_counter_stock AS B ON(A.BRND_ID=B.BRND_ID)
WHERE B.STOCK ='C'
AND B.STOCK_DATE='2017-01-18';

INSERT INTO brand_stock_overview
SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0)    
bottles, B.stock, B.stock_date
FROM tbl_brands A
LEFT JOIN tbl_counter_stock AS B ON(A.BRND_ID=B.BRND_ID)
LEFT JOIN brand_stock_overview C ON(A.BRND_ID=C.BRND_ID)
where B.STOCK='O' AND C.BRND_ID IS NULL 
AND B.STOCK_DATE='2017-01-18';