我有一张表merchandises
和merchandise_groups_merchandise
。后一个表是用于存储哪个商品被选择在哪个商品组中的中间表 - 多个到多个。有merchandises.id
到merchandise_groups_merchandise.merchandise_id
之间的关系。
我试图整理一个查询以产生以下结果,列出merchandises
表中的所有商品,其中is_selected
是一个布尔值,由商品_是否在特定商品组的merchandise_groups_merchandise
表。并且,merchandise_groups_merchandise.group_id
由用户指定。
我在两张桌子之间尝试过LEFT加入,当然,这只会返回组中间表中的实际商品。
我该怎么做?
-------------------------------
|id |title |is_selected
---------------------------
|1 |Tree |1
|2 |Log |0
|3 |Toy |1
这是我尝试过的查询的SQL:
PARAMETERS group_id Short;
SELECT IIf(IsNull([merchandise_groups_merchandise].[merchandise_id]),False,True) AS selected, merchandises.id, merchandises.title
FROM merchandises LEFT JOIN merchandise_groups_merchandise ON merchandises.id = merchandise_groups_merchandise.merchandise_id
WHERE (((merchandise_groups_merchandise.merchandise_group_id)=[group_id]));
答案 0 :(得分:0)
一种方法是使用iif()
和exists
子查询:
select m.*,
iif(exists (select 1
from merchandise_groups_merchandise as mgm
where m.id = mgm.merchandise_id and
mgm.merchandise_group_id = [group_id]
)), 1, 0) as IsInGroupFlag
from merchandizes as m