我想要一个左外连接,其间有一个 n:m 连接表。
Table A
column: id_a
Table A:B
column: id_a
column: id_b
Table B
column: id_b
表 b 保存所有可能的行。所以 B 列必须位于左侧。
我不知道如何呈现 1 个表 A 的所有可能值。我想显示所有整体和缺失的值(这就是为什么留在外面)
使用MySql
示例数据。
篮子(表A)
1 | basket x
2 | basket y
水果(表B)
1 | apple
2 | strawberries
3 | grapes
4 | lemon
连接表
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
结果 购物篮 X 查询的结果
1 | 1
1 | 2
1 | 3 (something which indicates it is not assigned . since there is no connection )
1 | 4 (something which indicates it is not assigned . since there is no connection )
最佳答案
我认为您需要一个笛卡尔
结果。考虑以下示例,
declare @baskets table(basket_id int not null primary key identity, basketName varchar(255));
declare @fruits table(fruit_id int not null primary key identity, fruitName varchar(255));
declare @basketsFruits table(basket_id int not null, fruit_id int not null);
insert into @baskets(basketName)
values('basket x'), ('basket y');
insert into @fruits(fruitName)
values('apple'), ('strawberries'), ('grapes'), ('lemon');
insert into @basketsFruits(basket_id, fruit_id)
values(1, 1), (1, 2), (2, 1), (2, 2), (2, 3);
select b.*, f.fruitName
, case when exists(select 1 from @basketsFruits as bf where bf.basket_id = b.basket_id and bf.fruit_id = f.fruit_id) then
'Fruit Present'
else
'Fruit not Present'
end as fruitStatus
from @baskets as b, @fruits as f -- cartesian all the fruits and all the baskets
where b.basket_id = 1
结果:
关于mysql - SQL 左外连接 n :m connection table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929184/