gpt4 book ai didi

MySQL - 选择项目列表,加入价目表 -> WHERE SPECIAL Price Exists Else Default

转载 作者:行者123 更新时间:2023-11-29 02:33:58 24 4
gpt4 key购买 nike

我的第一个表是一个项目表。 (invoice_inventory)我的第二个表是价目表 (inventory_prices),我有一个默认价目表 (company_id = 0) 和几个特殊价目表(但不是针对每个公司)。

通过以下查询,我尝试获取 company_id = 2 的所有商品的价格。它应该使用特殊价目表(company_id = 2,如果它存在)否则它应该使用默认价格(company_id = 0)。

我认为通过 GROUPING + ORDERING 它会起作用,但我忘记了 GROUP BYORDER 之前执行。

我想我可能需要一个子查询,但我不确定。

SELECT invoice_inventory.*, invoice_inventory_prices.* 
FROM invoice_inventory
LEFT JOIN invoice_inventory_prices
ON `invoice_inventory`.`inventory_id`
= `invoice_inventory_prices`.`inventory_id`
WHERE (company_id = 2 OR company_id = 0)
GROUP BY invoice_inventory.inventory_id
ORDER BY company_id DESC

最佳答案

我将使用两个 LEFT JOIN,第一个将获取默认价格 dp 别名,第二个将获取特价 (company_id=2) sp别名

CASE 用于判断特价是否存在,使用它,否则使用默认值。

你没有给列列表,所以我就猜了一下价格列的名称。如果您需要第二个(或更多)列,您可以添加额外的 CASE 语句。

SELECT i.inventory_id
, CASE
WHEN sp.Price IS NOT NULL THEN sp.Price
ELSE dp.Price
END AS PriceForItem
FROM invoice_inventory AS i
LEFT JOIN invoice_inventory_prices AS dp ON i.inventory_id = dp.inventory_id
AND dp.company_id = 0
LEFT JOIN invoice_inventory_prices AS sp ON i.inventory_id = sp.inventory_id
AND sp.company_id = 2
GROUP BY invoice_inventory.inventory_id

关于MySQL - 选择项目列表,加入价目表 -> WHERE SPECIAL Price Exists Else Default,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8203017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com