簡體   English   中英

一個SQL查詢以顯示父記錄及其子記錄?

[英]One SQL query to show parent records and their child records?

我有一個樹形結構,如下所示

Table1
- Iron
 + Land Vehicle
 + Water Vehicle
 + Air Craft 

Select * from Table1 Where Type = 'Vehicle'  

將給出以下結果。

Land Vehicle
Water Vehicle
Air Craft 

但是展開時的實際結構如下所示,

Table1
- Vehicle
 - Land Vehicle
     Car
     Van
     Bus
 - Water Vehicle
     Boat
     Ship
 - Air Craft 
     Jet
     Helicopter

上面的數據庫表看起來像,

Item             Type

King Bed          Bed
Double Bed        Bed
Steel D/Bed    Double Bed
Land Vehicle    Vehicle
Car           Land Vehicle 
Van           Land Vehicle 
Bus           Land Vehicle
Water Vehicle   Vehicle
Boat          Water Vehicle 
Ship          Water Vehicle 
Air Craft       Vehicle
Jet            Air Craft
Helicopter     Air Craft 
Arm Chair       Chair

結果應為所有車輛,結果應如下所示。

Land Vehicle   
Car           
Van           
Bus          
Water Vehicle   
Boat          
Ship          
Air Craft      
Jet           
Helicopter 

基本上,所需的查詢需要執行的操作是選擇Vehicle類型的所有內容,然后將結果集作為搜索條件,然后再次選擇。 例如,如果有三種類型的車輛,那么下一步應該是將這三種車輛一個接一個,並檢查這三種車輛的下方是否有東西。 如果有的話,一個接一個地搜索,直到樹結構結束。

select distinct(type)
from table1
where type like '%Vehicle%'
or type like '%Craft%';

這樣的事情應該可以工作,但是我會在您的桌子設計上工作。 類型應該只說“車輛”,“床”,“椅子”等,然后另一個字段(例如Type2)應該具有“土地”,“空氣”,“水”,“家具”或類似名稱。

我個人將Type1標識為“家具”,而Type2將其標識為“椅子”。

在您最近發表評論之后:

select item, distinct(type)
from table1
where type like '%Vehicle%'
where type like '%Craft%';

嗨Sanjaya Weerakkody,

給定數據模型(較差)的設計,很難找到一種有效的方法來完成您想要的事情。 您可以應用這樣的內容;

with Category AS
(
SELECT DISTINCT [Type] as label, [Type]
FROM table1 WHERE [Type] like '%Vehicle%' OR [Type] like '%Air Craft%')
, 
Aux as
(
    SELECT 0 as auxToOrder,  label, [type] FROM Category
    UNION
    SELECT 1 as auxToOrder , item, [type] FROM Table1 WHERE [Type] like '%Vehicle%' OR [Type] like '%Air Craft%'

)

select auxToOrder, [type], label 
from Aux
Order by [type], auxToOrder

結果

auxToOrder    type    label
0    Air Craft    Air Craft
1    Air Craft    Helicopter
1    Air Craft    Jet
0    Land Vehicle    Land Vehicle
1    Land Vehicle    Bus
1    Land Vehicle    Car
1    Land Vehicle    Van
0    Vehicle    Vehicle
1    Vehicle    Air Craft
1    Vehicle    Land Vehicle
1    Vehicle    Water Vehicle
0    Water Vehicle    Water Vehicle
1    Water Vehicle    Boat
1    Water Vehicle    Ship

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM