SQL Server 2008에서 여러 테이블을 사용하여 작업했으며 데이터가 기본 ASP 응용 프로그램에서 사용되었습니다. 다음 쿼리 (아래 참조)를 사용하여 '업데이트'페이지에 확인란을 채 웁니다. 첫 번째 테이블 (KSA)은 체크 박스를 채우는 반면 두 번째 테이블 (KSA_Out)은 사용자가 선택한 체크 박스를 제공합니다. 각 Objective에 대해 이러한 KSA 체크 박스 세트가 있습니다. 문제는 조인 된 테이블에 일치하는 항목이 없더라도 KSA Left Join이 폼의 체크 박스를 채우고 싶습니다.왼쪽 외부 조인, 다중 테이블, 기본 ASP 응용 프로그램에서 확인란 채우기
응용 프로그램의 배경은 다음과 같습니다. 표가있는 페이지 : 각 목표에 대한 행과 각 결과에 대한 열이 있습니다. 표에는 각 셀에 "추가/편집"링크가있는 Objectives 테이블과 결과 테이블과 목표/결과 조합을 업데이트하는 다음 페이지로 ObjectiveID와 OutcomeID를 전달하는 Querystring이있는 URL이 채워집니다 .
업데이트 페이지에는 양식에 체크 박스를 채우는 쿼리가 있습니다. KSA 테이블은 목록 항목을 채우고 OutcomesKSA 테이블은 이전에 사용자가 입력 한 모든 데이터를 선택란 (부울 인 OutcomesKSA.KSA_Value 필드) 형식으로 제공합니다. ObjOut 테이블은 목표 테이블과 결과 테이블을 연결하는 접합 테이블입니다.
사용자가 입력 한 체크 박스 데이터가 존재하면 (부울 인 OutcomesKSA.KSA_Value 필드) 아직 양식 만 얻을 경우 해당 응용 프로그램에서 특정 목표/결과 조합에 대한 데이터 만 얻고 싶습니다. OutcomesKSA 테이블에 데이터가 입력되지 않은 경우 KSA 테이블의 목록.
현재 사용중인 쿼리로는 아무 것도 채워지지 않습니다 (아래 참조).
이 문제에 도움을 주셔서 감사합니다.
Objectives table
ID
5
Outcomes table
ID
4
ObjOut table
ID|ObjectiveID|OutcomeID
1|5|4
OutcomesKSA table
ID|ObjOutID|KSA_ID
2|1|1
3|1|2
4|1|3
KSA table
ID
1
2
3
쿼리 : 여기
데이터는 테이블에서 테이블에 나타납니다 데이터 분산 및 관련 방법을 보여하는 방법 (I는 자신의 관계를 보여 PK와 및 FKS을 포함 시켰습니다) :
SELECT
KSA.ID as KSA_ID, KSA.KSA_Version, KSA.KSA_Sort_Order_Number,
KSA.KSA_Outcome_Number, KSA.KSA_Category as KSA_KSA_Category,
KSA.KSA_Category_Sub_Num, KSA.KSA_Category_Sub_Num_Descr,
KSA.KSA_Category_Sub_Num_Sub_Alpha, KSA.KSA_Category_Sub_Num_Sub_Alpha_Descr,
KSA.KSA_ID as KSA_KSA_ID, KSA.KSA_Descr_Combined as KSA_KSA_Descr_Combined,
KSA.LastUpdate, KSA.Date_Created,
OutcomesKSA.KSA_ID as OutcomesKSA_KSA_ID,OutcomesKSA.KSA_Value as OutcomesKSA_KSA_Value,OutcomesKSA.ObjOutID,
ObjOut.ObjectiveID, ObjOut.OutcomeID,
Objectives.ID as Obj_Obj_ID
FROM
KSA
LEFT OUTER JOIN
OutcomesKSA
ON
KSA.ID=OutcomesKSA.KSA_ID
INNER JOIN
ObjOut
ON
OutcomesKSA.ObjOutID=ObjOut.ID
INNER JOIN
Objectives
ON
ObjOut.ObjectiveID=Objectives.ID
WHERE
KSA.KSA_Outcome_Number ='1'
AND
KSA.KSA_Category ='k'
AND
Objectives.ID ='29'
ORDER BY KSA.KSA_Sort_Order_Number ASC;
표 :
이SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Objectives](
[ID] [int] IDENTITY(1,1) NOT NULL,
[CourseID] [int] NOT NULL,
[Objective] [varchar](max) NULL,
[LastUpdate] [datetime] NULL,
[Date_Created] [datetime] NULL,
CONSTRAINT [PK_Objectives] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Objectives] WITH NOCHECK ADD CONSTRAINT [FK_Objectives_Courses] FOREIGN KEY([CourseID])
REFERENCES [dbo].[Courses] ([CourseID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Objectives] CHECK CONSTRAINT [FK_Objectives_Courses]
GO
ALTER TABLE [dbo].[Objectives] ADD CONSTRAINT [DF_Objectives_Date_Created] DEFAULT (getdate()) FOR [Date_Created]
GO
=============
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Outcomes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[OutcomeGroup] [varchar](50) NULL,
[OutcomeType] [varchar](50) NULL,
[OutcomeNumber] [int] NULL,
[OutcomeName] [varchar](500) NULL,
[OutcomeDescription] [varchar](max) NULL,
[OutcomeVersionYear] [varchar](50) NULL,
[OutcomeVersionSemester] [varchar](50) NULL,
[LastUpdate] [datetime] NULL,
[Date_Created] [datetime] NULL,
CONSTRAINT [PK_Outcomes] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Outcomes] ADD CONSTRAINT [DF_Outcomes_Date_Created] DEFAULT (getdate()) FOR [Date_Created]
GO
==========
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ObjOut](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ObjectiveID] [int] NULL,
[OutcomeID] [int] NULL,
[LastUpdate] [datetime] NULL,
[Date_Created] [datetime] NULL,
CONSTRAINT [PK_ObjOut] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ObjOut] WITH CHECK ADD CONSTRAINT [FK_ObjOut_Objectives] FOREIGN KEY([ObjectiveID])
REFERENCES [dbo].[Objectives] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ObjOut] CHECK CONSTRAINT [FK_ObjOut_Objectives]
GO
ALTER TABLE [dbo].[ObjOut] WITH CHECK ADD CONSTRAINT [FK_ObjOut_Outcomes] FOREIGN KEY([OutcomeID])
REFERENCES [dbo].[Outcomes] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ObjOut] CHECK CONSTRAINT [FK_ObjOut_Outcomes]
GO
ALTER TABLE [dbo].[ObjOut] ADD CONSTRAINT [DF_ObjOut_Date_Created] DEFAULT (getdate()) FOR [Date_Created]
GO
===========
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[OutcomesKSA](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ObjOutID] [int] NOT NULL,
[KSA_ID] [int] NULL,
[KSA_Value] [bit] NULL,
[LastUpdate] [datetime] NULL,
[Date_Created] [datetime] NULL,
CONSTRAINT [PK_OutcomesKSA] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[OutcomesKSA] WITH CHECK ADD CONSTRAINT [FK_OutcomesKSA_ObjOut] FOREIGN KEY([ObjOutID])
REFERENCES [dbo].[ObjOut] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[OutcomesKSA] CHECK CONSTRAINT [FK_OutcomesKSA_ObjOut]
GO
ALTER TABLE [dbo].[OutcomesKSA] ADD CONSTRAINT [DF_OutcomesKSA_Date_Created] DEFAULT (getdate()) FOR [Date_Created]
=========================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[KSA](
[ID] [int] IDENTITY(1,1) NOT NULL,
[KSA_Version] [varchar](50) NULL,
[KSA_Sort_Order_Number] [int] NULL,
[KSA_Outcome_Number] [varchar](50) NULL,
[KSA_Outcome_Number_Sort] [varchar](50) NULL,
[KSA_Category] [char](1) NULL,
[KSA_Category_Sub_Num] [varchar](50) NULL,
[KSA_Category_Sub_Num_Sort] [varchar](50) NULL,
[KSA_Category_Sub_Num_Descr] [varchar](max) NULL,
[KSA_Category_Sub_Num_Sub_Alpha] [char](1) NULL,
[KSA_Category_Sub_Num_Sub_Alpha_Descr] [varchar](1000) NULL,
[KSA_ID] [char](8) NULL,
[KSA_ID_Sort] [char](8) NULL,
[KSA_Descr_Combined] [varchar](max) NULL,
[LastUpdate] [datetime] NULL,
[Date_Created] [datetime] NULL,
CONSTRAINT [PK_KSA] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[KSA] ADD CONSTRAINT [DF_KSA_Date_Created] DEFAULT (getdate()) FOR [Date_Created]
GO
이 SQL은 나에게 두통을 제공합니다. 그러나 관계없이 SELECT 문에서 가져온 결과는 무엇입니까? – Siyual
나는 당신이 무슨 뜻인지 안다. SELECT 문에서 반환되는 행은 0 개입니다. – buck1112