尝试使用一些非常有限的知识和经验来处理SQL查询.尝试了很多我通过搜索找到的东西,但没有想出我想要的结果.
我有四张桌子:
ORDERS
[ID][DATE]
ORDER_DETAILS
[ID][ITEM_NO][QTY]
ITEMS
[ITEM_NO][DESC]
KITS
[KIT_NO][ITEM_NO]
Run Code Online (Sandbox Code Playgroud)
Re:KITS - [KIT_NO]和[ITEM_NO]都是ITEMS表的FK.它们的串联是PK.
我想选择ORDERS,ORDERS.DATE,ORDER_DETAILS.ITEM_NO,ITEMS.DESC
没问题.一些简单的内部联接,我正在路上.
困难在于在select语句中添加一个列,IS_KIT如果符合以下情况则为true:
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
Run Code Online (Sandbox Code Playgroud)
但你也可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5396 次 |
| 最近记录: |