【发布时间】:2014-07-31 15:00:42
【问题描述】:
我有以下表格。我正在尝试加入这 4 个表,它会列出所有问题,即使用户没有回答用户和类别的任何问题。 有什么帮助吗?
select *
from tbl_category c
inner join tbl_questions q on q.categoryID = c.categoryID
left join tbl_answers a on a.questionID = q.questionID
left join tbl_users u on u.userID = a.userID
order by u.userID
这只会给出 9 条记录。我需要知道未回答的问题,以及未回答任何问题的用户。
CREATE TABLE [dbo].[tbl_users](
[userID] [int] IDENTITY(1,1) NOT NULL,
[firstName] [varchar](50) NULL,
[lastName] [varchar](50) NULL
)
GO
CREATE TABLE [dbo].[tbl_questions](
[questionID] [int] IDENTITY(1,1) NOT NULL,
[categoryID] [int] NOT NULL,
[description] [varchar](100) NULL
)
GO
CREATE TABLE [dbo].[tbl_category](
[categoryID] [int] IDENTITY(1,1) NOT NULL,
[description] [varchar](50) NULL
)
GO
CREATE TABLE [dbo].[tbl_answers](
[answer_id] [int] IDENTITY(1,1) NOT NULL,
[answerText] [varchar](250) NULL,
[questionID] [int] NULL,
[userID] [int] NULL
)
GO
-- tbl_questions
insert into tbl_questions ( categoryID, description )
values ( 1, 'How do you balance life and work?')
insert into tbl_questions ( categoryID, description )
values ( 1, 'Do you check voicemail and email when on vacation?')
insert into tbl_questions ( categoryID, description )
values ( 1, 'What is your favorite book?')
insert into tbl_questions ( categoryID, description )
values ( 2, 'What were your responsibilities?')
insert into tbl_questions ( categoryID, description )
values ( 2, 'What is your greatest strength?')
insert into tbl_questions ( categoryID, description )
values ( 2, 'What is your greatest weakness?')
insert into tbl_questions ( categoryID, description )
values ( 2, 'How do you evaluate success?')
-- tbl_users
insert into tbl_users ( firstName, lastName )
values ( 'Alessandra', 'Ambrosio' )
insert into tbl_users ( firstName, lastName )
values ( 'Adriana', 'Lima' )
insert into tbl_users ( firstName, lastName )
values ( 'Daniela', 'Pestova' )
-- tbl_answers
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q1', 1, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q2', 2, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q3', 3, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q4', 4, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q5', 5, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q6', 6, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'answer for q7', 7, 1)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'other answer for q5', 5, 2)
insert into tbl_answers ( answerText, questionID, userID )
values ( 'other answer for q2', 2, 2)
-- tbl_category
INSERT tbl_category (categoryID, description) VALUES (1, 'About You')
INSERT tbl_category (categoryID, description) VALUES (2, 'Job')
【问题讨论】:
-
您是否想要所有用户/问题组合的列表,即使他们没有回答?如果您包含最终所需的结果,则更容易理解您想要什么。
标签: sql-server join