2013-08-19 34 views
0

我需要從兩個表中加入兩列,並按照特定的順序連接表並顯示結果爲文本,在一列

表1和ColumnNM
表2和ColumnDESC

主鍵是顯示出來ColumnID

我對每個ColumnNM有多行ColumnDESC。所以我必須顯示在以下格式:

 
ColumnID ColumnNM 
------------------- 
ColumnDESC 
ColumnDESC 
ColumnDESC 
ColumnDESC 

ColumnID ColumnNM 
------------------- 
ColumnDESC 
ColumnDESC 

ColumnID ColumnNM 
------------------- 
ColumnDESC 
ColumnDESC 
ColumnDESC 

我必須顯示結果到文本,而不是網格。有關如何做到這一點的任何建議? 我必須創建它作爲存儲過程。任何幫助表示讚賞。下面是我所得到的:

DECLARE @Name nvarchar(max), 
@Lesson nvarchar(max), 
@lb nvarchar(max) 
SET @lb = '----------------------------------------------------' 

SELECT @Name = Module.Name 
FROM Module 
JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence 
WHERE Module.ModuleSequence = 1 
PRINT '1 ' + @Name 
PRINT @lb 

SELECT Lesson.Description 
FROM Module 
JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence 
WHERE Module.ModuleSequence = 1 

但我想我走了。

.......................................... OKAY,編輯, John Tabernik建議我得到這個......................................

(PS抱歉添加到你的答案評論,只是學習如何使用計算器)

SELECT M.Name, L.Description 
FROM Module M 
    JOIN Lesson L 
     ON M.ModuleSequence = L.ModuleSequence 
ORDER BY M.Name, L.Description 

我最終得到了M.Name重複四次,因爲有前四個不同L.Description M.Name,以及所有其他M.Name的不同金額。

實施例:

M.Name | L.Description 
----------------------------- 
A  | 1 
A  | 2 
A  | 3 
B  | 1 
B  | 2 
C  | 1 
C  | 2 
C  | 3 

但我它需要輸出這樣的:

A | 
----- 
1 | 
2 | 
3 | 

B | 
----- 
1 | 
2 | 

C | 
----- 
1 | 
2 | 

回答

0

對不起,有點晚了,但我已經解決了我需要的東西。我想我提出了一些問題。儘管如此,下面是我需要的代碼。希望它能激發任何有類似問題的人:

CREATE PROCEDURE ShowModuleWithLessons 
@CourseID int = 0 
AS 
BEGIN 

SET NOCOUNT ON 

DECLARE @MS INT 
DECLARE @ModuleCount INT 


SET @MS = 0 
SET @ModuleCount = (Select COUNT(Module.ModuleSequence) FROM Module WHERE Module.CourseID = @CourseID) 

IF EXISTS (SELECT * FROM Module WHERE Module.CourseID = @CourseID) 
BEGIN 
    WHILE @MS < @ModuleCount 
    BEGIN 
     SET @[email protected]+1 
      DECLARE @Name nvarchar(max), 
        @Lesson nvarchar(max), 
        @CID INT 
      SELECT @Name = Module.Name, 
        @CID = @MS 
      FROM Module 
      JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence 
      WHERE Module.ModuleSequence = @MS 


      PRINT CONVERT(VARCHAR(2),@MS) + '. ' + @Name 

      SELECT Lesson.Description AS Lessons 
      FROM Module 
      JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence 
      WHERE Module.ModuleSequence = @MS 
    END 
END 
ELSE 
BEGIN 
    PRINT 'Course with ID ' + CONVERT(VARCHAR(2),@CourseID) + ' does not exists' 
END 
1

被如何重要設置部開的與集管和「-------」就像你擁有它?簡單的SQL不會這樣做,但如果結果可以全部組合在一起並且簡單地排序,那很簡單。

你只是想這樣的事情:

SELECT column1, column2 
FROM table1 T1 
    JOIN table2 T2 
      on T1.id = T2.foreignkey 
ORDER BY column1, column2 

您可以使用任何拉出來這個數據進行格式化,但是,這個一般的方法將讓你的數據,整理你想要的方式。祝你好運!

+0

+1數據庫存儲和獲取數據。格式化它應該在應用程序層完成。 – fancyPants

+0

好吧,我把你的代碼,並得到這個: – MythRaven

相關問題