2014-02-27 44 views
0

希望有人可以用下面的如何結果從一行在同一個錶鏈接到另一個

幫助我有3列ID,申請表,NextVersion

這看起來像下面

ID1, WindowsXP, ID2, 
ID2, Windows7, ID3 
ID3, Windows8 , NULL 

返回我的結果表格的最佳方式如下。

ID1, WindowsXP, Windows7, 
ID2, Windows7, Windows8 
ID3, Windows8 , NULL 

在此先感謝

+4

提交的日期? –

+0

研究數據庫書籍。例如:數據庫簡介,Abraham Silberschatz等, – user1658435

+0

這些高中或大學的作業? – Ziouas

回答

0

,你可以做簡單的加入,但第二個,一些更改後給你機會,結果只限制開始與某些父ID(和所有descentant)的兒童。我不知道你真正的查詢會有多複雜

如果你只需要加入,那麼就對你感到羞愧,sql基礎知識!

SELECT m.id, 
     m.name, 
     y.name 
FROM mytable AS m 
     LEFT JOIN mytable AS y 
       ON m.parent = y.id 

和更多的東西cpmlocated

CREATE TABLE MyTable 
    ( 
    id  INT, 
    name VARCHAR(50), 
    parent INT 
) 
go 

INSERT INTO MyTable 
      (id, 
      name, 
      parent) 
VALUES  (1, 'WindowsXP', 2), 
      (2, 'Windows7', 3), 
      (3, 'Windows8', NULL) 
go 

WITH x 
    AS (SELECT * 
     FROM MyTable) 
SELECT m.id, 
     m.name, 
     x.name 
FROM MyTable as m 
     LEFT JOIN x 
       ON m.parent = x.id 
go 
+0

感謝代孕 - 你的例子工作。 SQL基礎知識!告訴我的經理誰給了我SQL工作沒有SQL培訓!我從來不知道你可以加入同一張桌子 - 現在 - 非常感謝。謝謝 – user3302303

0

試試這個

SELECT 
t1.ID, 
t1.Application, 
t1.NextVersion, 
t2.Application AS nextApplicationName 
FROM 
tbl_name t1 
LEFT JOIN 
tbl_name t2 
ON(t1.NextVersion = t2.ID); 
+0

謝謝馬努 - 這需要一個小的修正與t2左加入,然後完美的作品 – user3302303

+0

哦,是的..我現在編輯! – Manu

0

取代yourtable您的表名和執行你的作業本

SELECT a.id, 
    a.[Application], 
    y.[Application] 
    FROM yourtable AS a 
    LEFT JOIN yourtable AS b 
      ON a.NextVersion = b.id 
相關問題