尝试通过一些非常有限的知识和经验来进行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表中。它们的串联是PK。
我想选择ORDERS,ORDERS.DATE,ORDER_DETAILS.ITEM_NO,ITEMS.DESC
没问题。一些简单的内部联接,我在路上。
困难在于在select语句中添加一列,IS_KIT如果满足以下条件,则为true
IS_KIT
EXISTS(SELECT null FROM KITS WHERE KITS.ITEM_NO = ORDER_DETAILS.ITEM_NO)。
EXISTS(SELECT null FROM KITS WHERE KITS.ITEM_NO = ORDER_DETAILS.ITEM_NO)
(如果kits表包含该项目,请标记此行)
有什么方法可以计算该列?
有不同的方法可以做到这一点。
最简单的可能是带有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