我的問題是我們可以在不使用子查詢,CTE或臨時表的情況下將表A連接到表A和B的內部連接的結果表?在不使用子查詢,CTE或臨時表的情況下加入另一個連接的結果表
我正在使用SQL Server。
我會說明情況,用一個例子
的是兩個表GoaLScorers
和GoalScoredDetails
。
射手
gid Name
-----------
1 A
2 B
3 A
GoalScoredDetails
DetailId gid stadium goals Cards
---------------------------------------------
1 1 X 2 1
2 2 Y 5 2
3 3 Y 2 1
我期待的結果是,如果我選擇一個球場 'X'(或 'Y')
我應該得到所有的名字誰可能或可能沒有進球,也是總進球總數,總牌數。
如果沒有目標或沒有卡片,名稱可以使用空值。
我可以得到我與下面的查詢期望的結果
SELECT
gs.name,
SUM(goal) as TotalGoals,
SUM(cards) as TotalCards
FROM
(SELECT
gid, stadium, goal, cards
FROM
GoalScoredDetails
WHERE
stadium = 'Y') AS vtable
RIGHT OUTER JOIN
GoalScorers AS gs ON vtable.gid = gs.gid
GROUP BY
gs.name
我的問題,我們是可以得到不使用子查詢或CTE或臨時表上面的結果呢?
基本上我們需要做的是OUTER JOIN GoalScorers
到結果虛擬表INNER JOIN OF GoalScorers
和GoalScoredDetails
。
但是我總是面臨模糊的列名錯誤,因爲「gid」列出現在GoalScorers
以及結果表中。即使我嘗試爲列名使用別名,錯誤仍然存在。
我創建了一個SQL搗鼓這個她:http://sqlfiddle.com/#!3/40162/8
如果在引用列時始終使用表名或別名,則可避免該錯誤。示例:SELECT gid不包含SQL所需的全部信息,而SELECT gs.gid則包含此信息。 –
@ destination-data主要的問題是我如何在結果表中別名或指定gid列。即使我在select中指定了別名,它也不能用於加入,除非它是子查詢 – Raj