Solved

ID and parentID - how to sort?

Posted on 2002-06-21
3
432 Views
Last Modified: 2006-11-17
Hi, this is a table I've got (if it doesn't look good, paste it into notepad and use system as font... )

tblProjects
-----------------------------------
|  ID  |   parentID   |  content  |
|----------------------------------
|   1  |     null     |  blabla   |
|   2  |     1        |  blabla   |
|   3  |     1        |  blabla   |
|   4  |     null     |  blabla   |
|   5  |     4        |  blabla   |
|   6  |     4        |  blabla   |
|   7  |     4        |  blabla   |
|   8  |     null     |  blabla   |
|   9  |     1        |  blabla   |
|  10  |     1        |  blabla   |
|  11  |     4        |  blabla   |
|  12  |     4        |  blabla   |
-----------------------------------

These are all different projects and instances of projects. Where ID=1, we have a Mother project. ID 2 and ID 3 are children of that Mother Project. Same is found for Mother project 4 and mother project 8.

I want to send a request to the database whereas it replies with the entire list; listing first the mother project, then the parent projects, under each mother object. The result would be something like this:

-----------------------------------
|  ID  |   parentID   |  content  |
|----------------------------------
|   1  |     null     |  blabla   |
|   2  |     1        |  blabla   |
|   3  |     1        |  blabla   |
|   9  |     1        |  blabla   |
|  10  |     1        |  blabla   |
|   4  |     null     |  blabla   |
|   5  |     4        |  blabla   |
|   6  |     4        |  blabla   |
|   7  |     4        |  blabla   |
|  11  |     4        |  blabla   |
|  12  |     4        |  blabla   |
|   8  |     null     |  blabla   |
-----------------------------------

Get my picture? How can I do this?

Any help appreciated,

Kind regards,
Simon
0
Comment
Question by:NiTech
3 Comments
 
LVL 39

Expert Comment

by:appari
ID: 7098406
select ID, case parentID when null then ID else parentID end, content  from tblProjects
order by 2,1
0
 
LVL 142

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 100 total points
ID: 7098407
This is the way to do it:
select SortID = case when parentid is null then id else parentid end, ID, ParentID , Data
from yourtable
order by 1,2

Now, don't be disturbed by the SortID column for output, you should simply ignore it in the Application. If you still want to supress it:

select ID, ParentID, Data from
(select SortID = case when parentid is null then id else parentid end, ID, ParentID , Data
from yourtable) l
select SortID = case when parentid is null then id else parentid end, ID, ParentID , Data
from yourtable
order by SortID, ID

CHeers

0
 

Author Comment

by:NiTech
ID: 7102700
Thank you- this worked excellent.

This is an example of my output:

SortID      ID          ParentID    enDescription                                              
----------- ----------- ----------- ----------------------
195         195         NULL        Autonomy Implementation
226         226         NULL        Additional HelpDeks resource Q1
230         230         NULL        Accenture
235         235         NULL        Alcatel 4980 Implementation
296         296         NULL        Application Support/ Upgrade OOS
348         348         NULL        ATM Workshop
354         354         NULL        Annual leave
354         653         354         Annual Leave Calloff 1
354         654         354         Annual Leave Calloff 1
354         655         354         Annual Leave Calloff 1
361         361         NULL        Application Upgrade - item 001
402         402         NULL        Autonomy

As you can see, it is now very easy to determine whether or not the row is a child or a parent, simply by checking for existance of a ParentID.

Thank you very much.

Kind Regards,
Simon
0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction In my previous article (http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SSIS/A_9150-Loading-XML-Using-SSIS.html) I showed you how the XML Source component can be used to load XML files into a SQL Server database, us…
Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
Via a live example, show how to extract information from SQL Server on Database, Connection and Server properties
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now