gpt4 book ai didi

SQL Select - 如果值存在于另一个表中,则计算列

转载 作者:行者123 更新时间:2023-12-04 19:13:03 26 4
gpt4 key购买 nike

试图通过一些非常有限的知识和经验来完成 SQL 查询。尝试了很多我通过搜索找到的东西,但没有想出我想要的结果。

我有四个表:

ORDERS
[ID][DATE]

ORDER_DETAILS
[ID][ITEM_NO][QTY]

ITEMS
[ITEM_NO][DESC]

KITS
[KIT_NO][ITEM_NO]

回复:KITS - [KIT_NO] 和 [ITEM_NO] 都是 ITEMS 表的 FK。它们的串联就是PK。

我想选择 ORDERS、ORDERS.DATE、ORDER_DETAILS.ITEM_NO、ITEMS.DESC

没问题。一些简单的内部连接,我正在路上。

难点在于在select语句中增加一列, IS_KIT ,如果:
EXISTS(SELECT null FROM KITS WHERE KITS.ITEM_NO = ORDER_DETAILS.ITEM_NO) .

(如果套件表包含该项目,请标记该行)

有没有办法计算该列?

最佳答案

有不同的方法可以做到这一点。

最简单的可能是带有 CASE 计算列的 LEFT JOIN:

SELECT
o.date,
od.item_no,
i.desc,
CASE WHEN k.item_no IS NULL THEN 0 ELSE 1 END AS is_kit
FROM orders o
JOIN order_details od ON od.id=o.id
JOIN items i ON i.item_no = od.item_no
LEFT JOIN kits k ON k.item_no = od.item_no

但您也可以使用 SUBSELECT:
SELECT
o.date,
od.item_no,
i.desc,
(SELECT COUNT(*) FROM kits k WHERE k.item_no = od.item_no) AS is_kit
FROM orders o
JOIN order_details od ON od.id=o.id
JOIN items i ON i.item_no = od.item_no

关于SQL Select - 如果值存在于另一个表中,则计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021432/

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