簡體   English   中英

如何在SQLIte3上通過一個查詢聯接多個

[英]How to join multiple with one query on SQLIte3

這是我的情況:

  1. 表A:ID整數,種類整數,

(種類= 1搜索表B,種類= 2,搜索表C)

  1. 表B:ID,名稱,價格
  2. 表C:ID,項目,金額

表A

  • ID |
  • 1 | 1
  • 2 | 1
  • 2 | 2
  • 3 | 2

表B

  • 身份證名稱價格
  • 1個名稱1 2.0
  • 2名稱2 1.0

表C

  • ID項目數量
  • 2項目2 1.0
  • 3項目3 1.0

我正在嘗試使用一個查詢進行搜索,結果如下:

- ID | Kind | name | price | item. | amount - 1 | 1 | name1 | 2.0 | ---- | ----- - 2 | 1 | name2 | 1.0 | ---- |. ----- - 2 | 2 | ---- | --- | item2 | 1.0 - 3 | 2 | ---- | --- | item3 | 1.0

可能嗎?

select A.ID,A.kind,B.name,B.price,C.item,C.amount from TableA 
case when Kind=1 Left Join TableB on A.ID=B.ID Then Left Join TableC on A.ID=C.ID order by ID

只需使用兩個表進行Kind ,並使Kind值成為聯接條件的一部分。 即使找不到一個聯接 ,也可以使用外部聯接來獲取TableA行:

SELECT TableA.ID,
       TableA.Kind,
       TableB.name,
       TableB.price,
       TableC.item,
       TableC.amount
FROM TableA
LEFT JOIN TableB ON TableA.Kind = 1 AND TableA.ID = TableB.ID
LEFT JOIN TableC ON TableA.Kind = 2 AND TableA.ID = TableC.ID;

或者,在兩個單獨的查詢中使用普通聯接, 並將它們與許多NULL列組合:

SELECT TableA.ID,
       TableA.Kind,
       TableB.name,
       TableB.price,
       NULL AS item,
       NULL AS amout
FROM TableA
JOIN TableB USING (ID)
WHERE Table.Kind = 1

UNION ALL

SELECT TableA.ID,
       TableA.Kind,
       NULL,
       NULL,
       TableC.item,
       TableC.amount
FROM TableA
JOIN TableC USING (ID)
WHERE Table.Kind = 2;

暫無
暫無

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

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