我對SQL相當陌生,所以我不確定我試圖做什麼甚至被稱爲聯接。SQL查詢加入3個表
我有4個表,這個模式:
CREATE TABLE survey (
id serial PRIMARY KEY,
title text,
password text
);
CREATE TABLE question (
id serial PRIMARY KEY,
surveyId integer REFERENCES survey(id),
value text
);
CREATE TABLE answer (
id serial PRIMARY KEY,
questionId integer REFERENCES question(id) ,
value text
);
CREATE TABLE vote (
id serial,
questionId integer REFERENCES question(id),
answerId integer REFERENCES answer(id)
);
給出了具體的survey.id
(surveyId),我需要:
- 找到所有問題行,其中
question.surveyId
=surveyId
- 對於(1)中找到的每個問題行,找到所有答案行,其中
answer.questionId
=question.id
- 對於(2)中找到的每個答案,找到所有投票行,其中
vote.answerId
=answer.id
。 - 返回每個唯一answerId的投票行數。
所以,如果我有下面的測試數據:
question
=============
id | surveyId
1 | 3
2 | 3
3 | 3
4 | 5
5 | 6
answer
===============
id | questionId
1 | 1
2 | 1
3 | 2
4 | 3
vote
==========================
id | questionId | answerId
1 | 1 | 1
2 | 1 | 2
3 | 1 | 1
4 | 2 | 3
5 | 4 | 22
如果初始surveyId
是3,那麼我會想到這個查詢的結果是:
answerId | count
================
1 | 2
2 | 1
3 | 1
有任何方式來做到這一點作爲一個單一的SQL查詢?
你試過連接表嗎? –
如果您閱讀我的問題,我提到我不知道我在做什麼 - 我不知道如何進行連接,我甚至不知道是否需要連接。 –
如果你不知道你在做什麼,那麼也許一個好的開始將是瞭解SQL JOINS http://www.w3schools.com/sql/sql_join.asp – Bruce