2015-10-17 145 views
0

我有一個表merchandisesmerchandise_groups_merchandise字段值。後面的表格是用於存儲哪些商品被選擇在哪個商品組中的中間表 - 多對多。從merchandises.idmerchandise_groups_merchandise.merchandise_id有關係。如何從一個表中選擇所有行,計算基於另一個表

我試圖把一個查詢產生以下結果,從merchandises表中列出的所有商品和其中is_selected是由merchandise_id是否在merchandise_groups_merchandise表特定merchandise_group決定一個布爾值。並且,merchandise_groups_merchandise.group_id由用戶指定。

我已經嘗試了LEFT JOIN,兩個表之間,當然,只有返回實際的商品那是在小組中間表。

我該怎麼做?

------------------------------- 
|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 
+0

我以前的子查詢嘗試失敗,所以我認爲Access無法處理它們。謝天謝地,它可以!而不必要的加入也讓我失望。 – user3791372

相關問題