我正在使用ASP.NET和C#开发用户反馈系统。我有多个表,我正在尝试填充下拉列表,以便可以过滤反馈。
我的桌子:
CREATE TABLE tblModules
(
Module_ID nvarchar(10) PRIMARY KEY,
Module_Title nvarchar(MAX) NOT NULL
);
CREATE TABLE tblQuestions
(
Q_ID int PRIMARY KEY IDENTITY(1,1),
Question_Text varchar(1000) NOT NULL
);
CREATE TABLE tblFeedback
(
Submission_ID int PRIMARY KEY IDENTITY(1,1),
Username varchar(100) NOT NULL,
Domain varchar(50) NOT NULL,
DateTime_Submitted datetime NOT NULL
Module_ID nvarchar(10)
FOREIGN KEY (Module_ID) REFERENCES tblModules (Module_ID);
);
CREATE TABLE tblAnswers
(
Q_ID int NOT NULL,
Submission_ID int NOT NULL,
Answer_Text varchar(max),
FOREIGN KEY (Q_ID) REFERENCES tblQuestions(Q_ID),
FOREIGN KEY (Submission_ID) REFERENCES tblFeedback(Submission_ID)
);
我有两个下拉列表。第一个填充表中的所有模块。第二个需要填充来自tblQuestions的问题,但只有当它存在任何答案时(因此如果问题ID'Q_ID'存在于tblAnswers中)。
我可以从第一个下拉列表中获取selectedModuleID。我有一个TblAnswers中Q_ID引用的所有问题的列表。如何使用模块ID交叉引用此列表?
每个反馈提交都会获得提交ID和模块ID。
答案 0 :(得分:1)
你想:
所以,我猜你想要什么:
SELECT
*
FROM
tblQuestions Q
WHERE
EXISTS (SELECT *
FROM
tblAnswers A
JOIN
tblFeedback F ON A.Submission_ID = F.Submission_ID
WHERE
Q.Q_ID = A.Q_ID AND F.Module_ID = @moduleID)
答案 1 :(得分:0)
这应该可以解决问题......
SELECT Q_ID, Question_Text tblQuestions a
WHERE EXISTS (SELECT NULL FROM tblAnswers a WHERE a.Q_ID = q.Q_ID)