2013-12-15 39 views
0

你好,我看到了在網上一些有用的提示,但我仍然有一些問題。如何加入這個表

對不起,我不能使用,因爲缺乏信譽的圖像​​的鏈接。

http://www.imagebam.com/image/c49fe2295124505

這是我們正在創建新網站的「主要」部分,它是基於SQL SERVER 2012年,「TAREAS」表是主鍵表,至極具有自加入。我找到了一種方法來搜索表中的「樹」,TAREA = TASK,西班牙語到英語,所以基本上它是一個任務管理器,在至極一個任務可能是一個主要的任務的一部分,或者是seconday任務至極可以有更多的「孩子」任務。我用公用表表達式做了它。

這裏的東西在TAREAS表上的ID_TipoTarea(TaskType)上,可以在一個特定類型的任務上,例如在圖上有兩種可用類型(但是有和將會更多),TipoTareaDesarrollo或TipoTareaEventoSalon中,ID_TipoTarea不能是兩個表,所以如果ID_TipoTarea = 1,那麼我就TIpoTareaDesarrollo加入,如果ID_TipoTarea = 2那麼我就TipoTareaEventoSalon加盟等ID_TipoTarea = 3到另一個表中,將會有更多的類型,你可以幫我出?

怎麼能使用此查詢(這是查詢以獲得在主表中的所有級別,但我需要的條件聯接)來實現。

with tareasCTE (id_tarea,id_tareaorigen,id_tipoTarea,nivel) 
as(
select *,0 as nivel from tareas t 
where [email protected]_Tarea 
union all 
select t2.*,nivel+1 from tareasCTE t 
inner join tareas t2 
on t.id_tarea=t2.id_tareaOrigen 
) 

我得到這個輸出

ID_Tarea,ID_TareaORigen,NIVEL,ID_TipoTarea

3 NULL 0空(沒有加入)

4 3 1 1(加入此與TipoTareaDesarrollo)

5 3 1 1(加入此與TipoTareaDesarrollo)

6 3 1 3(加入此與AnotherTable)

7 4 2 2(加入此與TipoTareaEventoSalon)

8 4 2 2(加入此與TipoTareaEventoSalon)

9 4 2 4 (加入此與AnotherTable2)

10 9 3 1(加入此與TipoTareaDesarrollo)

11 9 3 1(加入此與TipoTareaDesarrollo)

12 9 3空(沒有加入)

13 12 4 1(加入此與TipoTareaDesarrollo)

14 12 4 2(加入此與TipoTareaEventoSalon)

15 12 4 2(加入此一個與TipoTareaEventoSalon)

太謝謝你了。

回答

0

您可以在第二CTE使用UNION子句合併表TipoTareaDesarrollo,TipoTareaEventoSalon,AnotherTable,AnotherTable2到一個表並打包以此爲這樣:

WITH TipoAreasCTE as 
(
SELECT * FROM TipoTareaDesarrollo 
UNION 
SELECT * FROM TipoTareaEventoSalon 
UNION 
SELECT * FROM AnotherTable 
UNION 
SELECT * FROM AnotherTable2 
) 

然後,您可以加入到tareasCTE TipoAreasCTE。

請注意,UNION中的不同表必須具有相同數據類型的相同列數;如果不是,你必須使用一個SELECT列表,或者CAST數據類型來使它們相似。

+0

多數民衆贊成在表不具有相同類型的事情,他們是不同類型的任務,多數民衆贊成在交易,所以我別無選擇,而不是建立查詢字符串,然後執行它? – thepanch

+0

在您提供的數據庫圖表中,它們是相同的數據類型,請在圖表中添加要加入的所有表格,以便清楚。還要解釋你想從查詢中得到什麼輸出(來自哪個表的哪些列)。 –