我正在尝试写一个sp。我的要求如下:
表A:
ID是主键。
+ ---- + --------- +
| ID | Col1 |
+ ---- + --------- +
| 1 |样品1 |
| 2 | Sample2 |
+ ---- + --------- +
表B:
ID是主键。
Col1_Id是TableA的外键
+ ---- + --------- + ------- +
| ID | Col1_Id | Col2 |
+ ---- + --------- + ------- +
| 1 | 1 | TestA |
| 2 | 1 | TestB |
| 3 | 2 | TestC |
+ ---- + --------- + ------- +
表C:
ID是主键。
+ ---- + ------------------------ +
| ID | QusetionText |
+ ---- + ------------------------ +
| 1 |示例问题一? |
| 2 |示例问题二? |
| 3 |示例样品三? |
+ ---- + ------------------------ +
我的输出应该是;
表D:
ID是主键。
Col1_Id是TableA的外键
Col2_Id是TableB的外键
+ ---- + ------------ + --------- + --------- + ----------- ------------- +
| ID | QuestionId | Col1_Id | Col2_Id | QusetionText |
+ ---- + ------------ + --------- + --------- + ----------- ------------- +
| 1 | Q_2013 | 1 | 1 |示例问题一? |
| 2 | Q_2013 | 1 | 1 |示例问题二? |
| 3 | Q_2013 | 1 | 1 |示例问题三? |
| 4 | Q_2013 | 1 | 2 |示例问题一? |
| 5 | Q_2013 | 1 | 2 |示例问题二? |
| 6 | Q_2013 | 1 | 2 |示例问题三? |
| 7 | Q_2013 | 2 | 3 |示例问题一? |
| 8 | Q_2013 | 2 | 3 |示例问题二? |
| 9 | Q_2013 | 2 | 3 |示例问题三? |
+ ---- + ------------ + --------- + --------- + ----------- ------------- +
请告诉我如何编写查询以获取TableD。
预先感谢大家的答复。
最佳答案
看一下这个,
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Prathiba
-- Create date:
-- Description:
-- =============================================
CREATE PROCEDURE SampleProc
AS
BEGIN
SET NOCOUNT ON;
SELECT dbo.TableA.Id, dbo.TableB.Col1_Id, dbo.TableC.Id AS Col2_Id, dbo.TableC.QuestionText
FROM dbo.TableA INNER JOIN
dbo.TableB ON dbo.TableA.Id = dbo.TableB.Col1_Id CROSS JOIN
dbo.TableC
END
GO
请确保与您的TableC没有关系,即为什么使用交叉联接。