簡體   English   中英

同一mysql表中的多級父子級

[英]multiple level parent-child in same mysql table

盡管我已經找到了關於該主題的幾篇文章,但是我還沒有給出我可以回答的答案。 我使用的大多數mysql查詢都非常簡單,因此我可能沒有關注。 無論如何,我將不勝感激。

我有一個項目表:建築物,地板,房間和起重器。 每個千斤頂是一個房間的孩子,每個房間是一個地板的孩子,等等。

我希望能夠列出所有孩子(樓層)和所有孩子的孩子,這樣我就得到了一個表格,該表格按給定建築物的樓層,房間,千斤頂排序。

不必太復雜就可以嗎?

創建表itemsObjectID int(11)NOT NULL, ObjectType varchar(50)COLLATE utf8_unicode_ci DEFAULT NULL, ObjectName varchar(50)COLLATE utf8_unicode_ci DEFAULT NULL, OwnerId int(11)DEFAULT NULL)

樣本數據:
1,建築物,我的大廳,NULL
2樓,FL1,1
3樓FL2,1
10室,RM101,2
11,房間,RM102,2
12,房間,RM201,3
12,房間,RM202,3
51,傑克,C101-1,2
52,傑克,D202-1,12
53,傑克,D102-1,11

建議的查詢結果:

我的大廳,FL1,RM101,C101-1

我的房間,FL1,RM102,D102-1

我的房間,FL2,RM201,

我的房間,FL2,RM202,D202-1

請嘗試使用http://sqlfiddle.com

CREATE TABLE items (  
  ObjectID int(11) NOT NULL,
  ObjectType varchar(50) DEFAULT NULL,
  ObjectName varchar(50) DEFAULT NULL,
  OwnerId int(11) DEFAULT NULL );

insert into items values(1,'building','my hall',NULL);
insert into items values(2,'floor','FL1',1);
insert into items values(3,'floor','FL2',1);
insert into items values(10,'room','RM101',2);
insert into items values(11,'room','RM102',2);
insert into items values(12,'room','RM201',3);
insert into items values(13,'room','RM202',3);
insert into items values(51,'jack','C101-1',10);
insert into items values(52,'jack','D202-1',13);
insert into items values(53,'jack','D102-1',11);

查詢:

select distinct I1.ObjectName AS building,
            i2.ObjectName as floor,
            i3.ObjectName as room,
            i4.ObjectName as jack
from Items I1 
inner join Items i2 on I1.Objectid = i2.ownerId and I1.ObjectType = 'building' and i2.ObjectType = 'floor'
inner join Items i3 on i2.Objectid = i3.ownerId and i2.ObjectType = 'floor' and i3.ObjectType = 'room'
 left join Items i4 on i3.Objectid = i4.ownerId and i3.ObjectType = 'room' and i4.ObjectType = 'jack'
order by I1.ObjectName,i2.ObjectName,i3.ObjectName,i4.ObjectName

暫無
暫無

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

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