2013-10-24 23 views
0

加入我有我的T-SQL服務器選擇與identation

Table 1: Car {id, name} 
Table 1: CarPart {id, name, CarId} 

我想我的選擇結果出現類同以下格式

id - carname - carpartId - carPartName 
----------------------------------------------- 
1  car1 
         101   CarPartA 
         102   CarPartV 
         103   CarPartFD 
2  car2 
         101   CarPartAA 
         102   CarPartDD 
         103   CarPartD1 
3  car3 
         101   CarPartCA 
         102   CarPart1D 
         103   CarPartDB 

兩個表是否有可能與identation中顯示此一個單一的選擇?
謝謝。

+3

查詢通常沒有_identation_,這對客戶端來說很有用,例如使用和顯示這些數據的控件。 –

+0

SQL是一種獲取數據的語言。這看起來像是一個本地UI操作。 –

+0

你的車都有相同的ID。 – hvd

回答

2

這幾乎從來都不是一個好主意。無論你用什麼來執行SQL,幾乎肯定會更適合於修改數據的呈現方式。

也就是說,有一些有用的情況下表示層是垃圾,對於這些情況,它可能是有意義的。我會給你一個疑問,即你正在處理其中一種情況。

select id = presentationid, carname, carpartid, carpartname 
from (
select carid = id, presentationid = id, carname = name, carpartid = null, carpartname = null 
from Car 
union all 
select carid = Car.id, presentationid = null, carname = null, carpartid = CarPart.id, carpartname = CarPart.Name 
from Car 
inner join CarPart 
on CarPart.CarId = Car.id 
) as sub 
order by carid, carpartid; 

http://www.sqlfiddle.com/#!6/6a57e/2

既然你想爲汽車數據,爲汽車零件數據分開行,你需要兩個獨立的select位的結果相結合,並以這樣的方式,這輛車爲了他們零件數據遵循相應的汽車數據。我正在通過在列表中添加carid來完成此操作,即使汽車零件數據也是如此。

+0

實際上它總是一個壞主意,但有時一個壞主意是唯一一個能及時工作的主意。 :( –

+0

這非常有啓發性,我不需要它用於生產。對於日誌查看和調試它是一個很好的解決方案。謝謝。 – Jeb