[英]How to join multiple with one query on SQLIte3
Here are my case: 这是我的情况:
(Kind=1 search Table B, Kind=2, search Table C)
(种类= 1搜索表B,种类= 2,搜索表C)
Table A 表A
TABLE B 表B
TABLE C 表C
what I am trying to search with one query and the result like: 我正在尝试使用一个查询进行搜索,结果如下:
- 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
Is it possible? 可能吗?
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
Just join with both tables, and make the Kind
value part of the join condition. 只需使用两个表进行
Kind
,并使Kind
值成为联接条件的一部分。 Use outer joins to get TableA rows even when no match is found for one join: 即使找不到一个联接 ,也可以使用外部联接来获取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;
Alternatively, use normal joins in two separate queries, and combine them with lots of NULL columns: 或者,在两个单独的查询中使用普通联接, 并将它们与许多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.