SQL INNER JOINing 2 个子查询
SQL INNER JOINing 2 Subqueries
我正在尝试将这 2 个子查询(我认为这就是所谓的)内部连接在一起,其中第一个查询的 branchName 等于第二个查询的 branchName。
但是,他们似乎并不想联合起来,而且以我对 SQL 的有限了解,我似乎找不到解决此问题的方法。我尝试将括号移动到各种位置,但它也不喜欢那样。
SELECT *
FROM
(
SELECT B.branchName, A.type, AVG (T.amount), COUNT(A.accNumber)
FROM Branch B, Account A, Transactions T
WHERE
B.branchNumber = A.branchNumber AND
A.accNumber = T.accNumber
GROUP BY B.branchName, A.type
)
INNER JOIN
(
SELECT B1.branchName, COUNT(A1.accNumber)
FROM Account A1, Branch B1
WHERE
A1.branchNumber = B1.branchNumber
GROUP BY B1.branchName
HAVING COUNT(A1.accNumber) > 5
)
ON
B.branchName = B1.branchName
为了使查询工作,你需要命名内部选择(子查询):
SELECT *
FROM
(
SELECT B.branchName, A.type, AVG (T.amount), COUNT(A.accNumber)
FROM Branch B, Account A, Transactions T
WHERE
B.branchNumber = A.branchNumber AND
A.accNumber = T.accNumber
GROUP BY B.branchName, A.type
) q1
INNER JOIN
(
SELECT B1.branchName, COUNT(A1.accNumber)
FROM Account A1, Branch B1
WHERE
A1.branchNumber = B1.branchNumber
GROUP BY B1.branchName
HAVING COUNT(A1.accNumber) > 5
) q2
ON
q1.branchName = q2.branchName
您应该为每个子查询设置名称列。试试这个:
SELECT *
FROM
(
SELECT B.branchName, A.type, AVG (T.amount) AS [AVG], COUNT(A.accNumber) AS [COUNT]
FROM Branch B, Account A, Transactions T
WHERE
B.branchNumber = A.branchNumber AND
A.accNumber = T.accNumber
GROUP BY B.branchName, A.type
) AS T1
INNER JOIN
(
SELECT B1.branchName, COUNT(A1.accNumber) AS [COUNT]
FROM Account A1, Branch B1
WHERE
A1.branchNumber = B1.branchNumber
GROUP BY B1.branchName
HAVING COUNT(A1.accNumber) > 5
) AS T2
ON
T1.branchName = T2.branchName
我正在尝试将这 2 个子查询(我认为这就是所谓的)内部连接在一起,其中第一个查询的 branchName 等于第二个查询的 branchName。
但是,他们似乎并不想联合起来,而且以我对 SQL 的有限了解,我似乎找不到解决此问题的方法。我尝试将括号移动到各种位置,但它也不喜欢那样。
SELECT *
FROM
(
SELECT B.branchName, A.type, AVG (T.amount), COUNT(A.accNumber)
FROM Branch B, Account A, Transactions T
WHERE
B.branchNumber = A.branchNumber AND
A.accNumber = T.accNumber
GROUP BY B.branchName, A.type
)
INNER JOIN
(
SELECT B1.branchName, COUNT(A1.accNumber)
FROM Account A1, Branch B1
WHERE
A1.branchNumber = B1.branchNumber
GROUP BY B1.branchName
HAVING COUNT(A1.accNumber) > 5
)
ON
B.branchName = B1.branchName
为了使查询工作,你需要命名内部选择(子查询):
SELECT *
FROM
(
SELECT B.branchName, A.type, AVG (T.amount), COUNT(A.accNumber)
FROM Branch B, Account A, Transactions T
WHERE
B.branchNumber = A.branchNumber AND
A.accNumber = T.accNumber
GROUP BY B.branchName, A.type
) q1
INNER JOIN
(
SELECT B1.branchName, COUNT(A1.accNumber)
FROM Account A1, Branch B1
WHERE
A1.branchNumber = B1.branchNumber
GROUP BY B1.branchName
HAVING COUNT(A1.accNumber) > 5
) q2
ON
q1.branchName = q2.branchName
您应该为每个子查询设置名称列。试试这个:
SELECT *
FROM
(
SELECT B.branchName, A.type, AVG (T.amount) AS [AVG], COUNT(A.accNumber) AS [COUNT]
FROM Branch B, Account A, Transactions T
WHERE
B.branchNumber = A.branchNumber AND
A.accNumber = T.accNumber
GROUP BY B.branchName, A.type
) AS T1
INNER JOIN
(
SELECT B1.branchName, COUNT(A1.accNumber) AS [COUNT]
FROM Account A1, Branch B1
WHERE
A1.branchNumber = B1.branchNumber
GROUP BY B1.branchName
HAVING COUNT(A1.accNumber) > 5
) AS T2
ON
T1.branchName = T2.branchName