gpt4 book ai didi

MYSQL - 重复

转载 作者:行者123 更新时间:2023-11-29 21:37:55 27 4
gpt4 key购买 nike

您好,我目前正在编写一些软件来管理我们的库存。我搜索了 2 个表

master_stock(保存每一个股票代码和描述)库存(保存库存代码、地点、数量...)

一切都很好,但这是我遇到的问题。

假设我的库存表有 2 条记录,其中 stockCode 为“testcode”,但两条记录的位置和数量不同

然后我的 master_stock 包含该 stockCode 的 1 个实例及其描述

如果我搜索“testcode”,那么我会得到 3 个结果,其中 2 个来自 stock,这很好,但我也会得到来自 master_stock 的结果,我想要它,所以如果至少有一个结果stock 那么我不想显示 master_stock 中的行,但如果 stock 中没有找到任何内容,则显示 master_stock 中的行。

所以发生的情况是我正在返回我不需要查看的结果,这意味着搜索速度较慢,并且由于结果数量过多,员工查看起来会感到困惑

SELECT ms.stockCode AS 'Stock Code',
ms.description AS 'Description',
st.quantity AS 'Quantity',
um.UnitMeasurementName AS 'Unit Measurement',
dep.departmentName AS 'Location',
st .rack AS 'Rack',
st.cost AS 'Cost Per Unit',
(st.cost * st.quantity) AS 'Total Cost',
sc.conditionDescription AS 'Condition'

FROM stock As st

INNER JOIN master_stock ms on ms.stockCode = st.stockCode
INNER JOIN racks r on r.rack= st.rack
INNER JOIN departments dep on dep.departmentId = r.departmentId
INNER JOIN unit_measurements um on um.unitMeasurementId = ms.unitMeasurementId
INNER JOIN stock_conditions sc on sc.conditionId = st.stockCondition

WHERE ms.stockCode LIKE '%testcode%'

Union DISTINCT

SELECT ms.stockCode AS 'Stock Code',
ms.description AS 'Description',
'0',
'NO MEASUREMENT',
'NO LOCATION',
'NO RACK',
'0',
'0',
'NO CONDITION'

FROM master_stock As ms

WHERE ms.stockCode LIKE '%testcode%';

最佳答案

一种方法是完全放弃联合并使用 master_stock 中的 LEFT JOIN 而不是 INNER JOIN:

SELECT ms.stockCode AS 'Stock Code', 
ms.description AS 'Description',
IFNULL(st.quantity, 0) AS 'Quantity',
...
FROM master_stock as ms
LEFT JOIN stock as st on ms.stockCode = st.stockCode
WHERE ms.stockCode LIKE '%testcode%

这应该为您提供与 NULL 值匹配的所有主库存条目,其中没有相应的库存条目。然后,您可以在显示例程中将 NULL 值替换为常量“NO MEASUREMENT”字符串,或者在 SELECT 中使用 IFNULL 表达式返回“NO MEASURMENT”,其中库存值为 NULL。

关于MYSQL - 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34765477/

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