2016-04-19 22 views
-3

社區,
因此,我有一個數據庫,其中有幾張表格,應該以我現在無法想象的方式加入它們。我的SQL技能非常基礎,所以對我也沒有幫助。(SQL)查詢的任何想法?

但這裏是當前形勢:

我有一個表問題和一張桌子答案

每個問題都有一個ID和一個文本和4分的答案,它位於回答表。在答案 -column「正確」的存在無論是真的還是假的(它是一個假的或者真正的答案)

Tables

現在,棘手的部分是,我有2個表,命名團隊TAnswers。如果用戶回答問題,他的選擇將進入TAnswers -table。

enter image description here

所以一個SELECT * FROM TAnswers給了我這樣的:

enter image description here

最後,生成一個結果表,我希望它看起來像:

TEAM | CORRECT ANSWERS 

有誰能夠幫助我?對不起,我最終還是寫不好,我有一個有點太多咖啡:)

編輯

一些試圖圍繞並通過reddit的教程閱讀(榮譽對裏奇·布倫納)之後,所以我找到了回答自己(其他人很好,但不是我搜索的)。因此,這裏是我的答案:

SELECT Team, COUNT(a.TeamID) as [Correct Answers] FROM TAnswers as a 
RIGHT JOIN Answers ON a.AnswerID = Answers.ID 
RIGHT JOIN Teams ON a.TeamID = Teams.IDTeam 
WHERE Correct = 1 
GROUP BY Team 
ORDER BY [Correct Answers] desc; 
+0

誰能告訴我爲什麼我的問題是正在downvoted? –

+0

請將您的問題標題改爲更具描述性的內容。很明顯,這是一個關於您使用的標記中的SQL的問題,顯然您需要某個查詢的幫助或者您不會在此發佈信息。您的標題應該以與將來在搜索結果中看到它的讀者相關的方式描述問題或問題。在進行編輯時,您還可以自行編寫此查詢。 –

+0

因爲我們不是爲了幫助那些在實際工作中沒有表現出任何努力的人。你把我們誤認爲免費的代碼編寫服務。 – TomTom

回答

1

好吧,我會幫你在這裏。這似乎是一個家庭作業問題,所以我不會給你答案,而是我會幫你自己到達那裏。

你的基礎表將會是'TAnswers',因爲它有加入到其他表的鍵。然後你要完成左邊的連接到其他表格。

SELECT 
a.Team 
,d.Field 
FROM TAnswers a 
LEFT JOIN SecondTable b on a.Field = b.Field 
LEFT JOIN ThirdTable c on a.Field = c.Field 
LEFT JOIN FourthTable d on a.Field = d.Field 

你將不得不工作你將用於連接的領域。

然後你需要弄清楚你如何計算正確的答案,你打算使用SUM還是WHERE子句?由你決定。

+0

好的,謝謝,我會試一試:)但是,我的聲譽由於這個問題已經分成了一半,這很好啊..... –

+2

我不會擔心聲譽是誠實的。我可以明白爲什麼它讓人感到沮喪,加入多個表是與SQL一起工作的一個相當基本的部分,並且您要求一個專家社區來幫助您。如果你正在爲這樣的查詢而苦苦掙扎,那裏有一些優秀的學習資源。如果您覺得它有用,我會很高興向您指出。 –

+0

是啊,那會很好你:)我看了一個W3Schools,但這就像一個教程,而不是一個學習資源。 PS:我不知道爲什麼,但我的代表恢復了正常,甚至比以前更高...... –

1
select t.*, a.* from Teams t, Answers a, Questions q, TAnswers ta 
where ta.AnswerID = A.Id 
and a.Correct = true 
and ta.TeamID = t.ID 
+3

請至少使用ANSI-92連接語法。 – alroc

2

事情是這樣的:

select (select team from Teams where teamid = t.teamid) as team, 
     count(1) 
from Questions q 
    join Answers a on q.id = a.questionId 
    join TAnswers ta on ta.answerId = a.id 
    join Teams t on t.id = ta.teamId 
where a.correct = true 
group by t.teamid; 
+0

Msg 8120,Level 16,State 1,Line 1 –

+0

它還說什麼? – Tobb

+0

消息8120,級別16,狀態1,行1列'TAnswers.TeamID'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 –

1
select 
    t.team, 
    count(*) correctAnswers 
from Teams t 
left join TAnswers ta on ta.TeamID=t.ID 
left join Answears a on a.ID=ta.AnswerID and a.Correct=1 
group by t.team 
+0

這個查詢只是說團隊總共給了多少答案 –

1
SELECT 
    t.Team,a.AText 
FROM Teams AS t 
LEFT JOIN TAnswers AS ta ON ta.TeamID=t.TeamID 
LEFT JOIN Answers AS a ON a.ID=ta.AnswerID 
    AND a.Correct=1 

爲了使計數:

SELECT 
    t.Team,Count(a.AText) AS [Correct Answers] 
FROM Teams AS t 
LEFT JOIN TAnswers AS ta ON ta.TeamID=t.TeamID 
LEFT JOIN Answers AS a ON a.ID=ta.AnswerID 
    AND a.Correct=1 
GROUP BY t.Team