2013-11-19 2 views
0

Я пытаюсь написать sp. Мое требование упомянуто ниже:Как написать хранимую процедуру

TableA:

Id является первичным ключом.

+----+---------+ 
| Id | Col1 | 
+----+---------+ 
| 1 | Sample1 | 
| 2 | Sample2 | 
+----+---------+

TableB:

Id является первичным ключом. Col1_Id является внешним ключом TableA

+----+---------+-------+ 
| Id | Col1_Id | Col2 | 
+----+---------+-------+ 
| 1 |  1 | TestA | 
| 2 |  1 | TestB | 
| 3 |  2 | TestC | 
+----+---------+-------+

TableC:

Id является первичным ключом.

+----+------------------------+ 
| Id |  QusetionText  | 
+----+------------------------+ 
| 1 | Sample Question One? | 
| 2 | Sample Question Two? | 
| 3 | Sample Euestion Three? | 
+----+------------------------+

Мой вывод должен быть; Таблица D:

Идентификатор является основным ключом. Col1_Id является внешним ключом TableA Col2_Id является внешним ключом TableB

+----+------------+---------+---------+------------------------+ 
| Id | QuestionId | Col1_Id | Col2_Id |  QusetionText  | 
+----+------------+---------+---------+------------------------+ 
| 1 | Q_2013  |  1 |  1 | Sample Question One? | 
| 2 | Q_2013  |  1 |  1 | Sample Question Two? | 
| 3 | Q_2013  |  1 |  1 | Sample Question Three? | 
| 4 | Q_2013  |  1 |  2 | Sample Question One? | 
| 5 | Q_2013  |  1 |  2 | Sample Question Two? | 
| 6 | Q_2013  |  1 |  2 | Sample Question Three? | 
| 7 | Q_2013  |  2 |  3 | Sample Question One? | 
| 8 | Q_2013  |  2 |  3 | Sample Question Two? | 
| 9 | Q_2013  |  2 |  3 | Sample Question Three? | 
+----+------------+---------+---------+------------------------+

Пожалуйста, скажи мне, как написать запрос, чтобы получить внесенные.

Благодарим заблаговременно за ваш ответ.

+1

Невозможно увидеть какое-либо отношение между таблицей и другими таблицами. –

+0

полностью. Каждая запись из таблицы A содержит одну или несколько записей в TableB. Мне нужно создать таблицу (TableD), где записи из TableC wil будут вставлены в записи TableB. Всего TableD содержит записи 3x3 (#TableB x #TableC). – Deepak

ответ

1

проверить это,

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 т.е.., Почему перекрестное объединение использует.

+0

Спасибо @Anjali. Он работает нормально. – Deepak

Смежные вопросы