[英]How to join multiple with one query on SQLIte3
这是我的情况:
(种类= 1搜索表B,种类= 2,搜索表C)
表A
表B
表C
我正在尝试使用一个查询进行搜索,结果如下:
- 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.