我正在使用MS Access 2007.我有2个表:苏打的类型和可喜性。
苏打的种类有:可乐,百事可乐,胡椒博士和梅洛黄
可爱性是使用以下选项查找:喜欢,不喜欢,没有偏好
我知道如何使用DCount(“[种类]”,“[种类的苏打]”,“[种类]”=“可口可乐”)计算表中的焦炭或梅洛黄色数量
我也知道如何计算喜欢,不喜欢,没有偏好的数量。
(“[Perception]”,“[Likeability]”,“[Perception]”=“'喜欢')
但是,如果我需要按类型计算“喜欢”的数量,该怎么办?
即。该表应如下所示:
Coke | Pepsi | Dr. Pepper | Mello Yellow
Likes 9 2 12 19
Dislikes 2 45 1 0
No Preference 0 12 14 15
我知道在Access中我可以创建一个交叉表查询,但我的表是通过ID连接的。所以我的[Likeability]表有一个ID列,它与我的[Types]表中的ID列相同。这就是关系,这就是连接我的桌子的原因。
我的问题是,我不知道如何应用条件来计算喜欢,不喜欢等,仅适用于我指定的类型。好像我首先要检查[Likeability]表中的“Likes”,并在[Types]表中交叉引用ID和ID。
我很困惑,你现在也可能。但我想做的就是计算每种苏打水的喜欢和不喜欢的数量。
请帮忙。
答案 0 :(得分:5)
我的表格看起来不是很清楚(对我来说),所以我们假设以下
<强>表强>
Soda
------
Soda_ID (Long Integer (Increment))
Soda_Name (Text(50)
Perception
------
Perception_ID (Long Integer (Increment))
Perception_Name (Text(50)
Likeability
-----------
Likeability_ID (Long Integer (Increment))
Soda_ID (Long Integer)
Perception_ID (Long Integer)
User_ID (Long Integer)
数据强>
Soda_Id Soda_Name
------- ---------
1 Coke
2 Pepsi
3 Dr. Pepper
4 Mello Yellow
Perception_ID Perception_Name
------------- ---------
1 Likes
2 Dislikes
3 No Preference
Likeability_ID Soda_ID Perception_ID User_ID
-------------- ------- ------------- -------
1 1 1 1
2 2 1 1
3 3 1 1
4 4 1 1
5 1 2 2
6 2 2 2
7 3 2 2
8 4 2 2
9 1 3 3
10 2 3 3
11 3 3 3
12 4 3 3
13 1 1 5
14 2 2 6
15 2 2 7
16 3 3 8
17 3 3 9
18 3 3 10
转换查询您可以编写像这样的查询
TRANSFORM
Count(l.Likeability_ID) AS CountOfLikeability_ID
SELECT
p.Perception_Name
FROM
Soda s
INNER JOIN (Perception p
INNER JOIN Likeability l
ON p.Perception_ID = l.Perception_ID)
ON s.Soda_Id = l.Soda_ID
WHERE
p.Perception_Name<>"No Preference"
GROUP BY
p.Perception_Name
PIVOT
s.Soda_Name;
查询输出
Perception_Name Coke Dr_ Pepper Mello Yellow Pepsi
--------------- ---- ---------- ------------ -----
Dislikes 1 1 1 3
Likes 2 1 1 1