【发布时间】:2020-08-30 03:51:10
【问题描述】:
有 3 个表:
Table A
aNo | aName | aCity
A1 | Alex | Ohio
A2 | Nick | LA
A3 | Sam | Seatle
A4 | Rick | Sydney
.
.
.
Table B
bNo | aNo | bType
B1 | A1 | big
B2 | A1 | small
B3 | A1 | small
B1 | A4 | Medium
B2 | A4 | tiny
B3 | A4 | Big
.
.
Table C
aNo | cDate | bNo
A1 | 2011 | B2
A2 | 2006 | B2
A3 | 1993 | B1
A4 | 2018 | B3
A4 | 2013 | B3
A4 | 2002 | B3
.
.
我需要创建一个视图来显示 aName、bType 和 SUM(TableB.aNo[A1,A4 only])
它应该显示如下内容:
aName | bType | A1 and A4 quantity
Alex | Big | 1
Alex | Medium| Null
Alex | small | 2
Alex | tiny | Null
Rick | Big | 1
Rick | Medium| 1
Rick | small | Null
Rick | Tiny | 1
我试过这个:
CREATE VIEW v_A1A4
AS
SELECT
A.aName,
B.bType,
sum(C.aNo) AS Rooms_Total
FROM
A
INNER JOIN Room ON B.aNo = A.aNo
INNER JOIN C ON C.aNo = A.aNo
WHERE C.aNo = 'A1' AND C.aNo = 'A4';
SELECT * FROM v_A1A4;
但这显示了新的 VIEW 表。但所有值都是 NULL。
aName | bType | A1 and A4 quantity
NULL | NULL | NULL
我需要显示值 A1 和 A2 的数量。
我该怎么办?
【问题讨论】:
-
b.Ano不是一个数字,所以不清楚sum()应该做什么。 -
在您的样本数据中,表 C 包含 3 行 A4,Rick,bNo = B3。此 B3 链接到表 B 的行:B3,A4,仅限 Big。为什么要在结果中:Rick |大 | 1、瑞克|中型| 1、瑞克|小 | 1 个?
-
嗨@GordonLinoff,感谢您的关注。这是一个错误,它应该是 count() ,正如您稍后在解决方案中所展示的那样。
-
嗨@forpas,这可以澄清一下每个表的作用:需要表C,因为它决定了As的使用次数。例如。表 C 就像使用表 B 中的动物园的预订表。A1 有像 B1、B2 和 B3 这样的笼子。这些笼子有Big、Medium、Small的类型......所以我需要计算A1和A2在表C中使用了多少次。
-
很好,但您预期结果中的数字仅来自表 B。那么结果中表 C 有什么用呢?