簡體   English   中英

SQL Select - 如果另一個表中存在值,則計算列

[英]SQL Select - Calculated Column if Value Exists in another Table

嘗試使用一些非常有限的知識和經驗來處理SQL查詢。 嘗試了很多我通過搜索找到的東西,但沒有想出我想要的結果。

我有四張桌子:

ORDERS
[ID][DATE]

ORDER_DETAILS
[ID][ITEM_NO][QTY]

ITEMS
[ITEM_NO][DESC]

KITS
[KIT_NO][ITEM_NO]

Re:KITS - [KIT_NO]和[ITEM_NO]都是ITEMS表的FK。 它們的串聯是PK。

我想選擇ORDERS,ORDERS.DATE,ORDER_DETAILS.ITEM_NO,ITEMS.DESC

沒問題。 一些簡單的內部聯接,我正在路上。

難點在於向select語句IS_KIT添加一個列,如果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

但你也可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM