Skip to content
Advertisement

Query to get all siblings

I have table like that:

 ID NAME SURNAME MotherID FatherID
    0   JJ   smi       NULL    NULL
    1   ja   rly       NULL    NUL
    2   ak   smi       0        1
    3   ol   smi       0        1
    4   oa   woo       2        3
    5   oe   boo       2        3

    etc.

I need query that with specific parameter as NAME and surname will return me all siblings of a person. Expected output

NAME SURNAME FATHERNAME FATHERSURNAME MOTHERNAME MOTHERSURNAME
AK   SMI        JA        RLY             JJ        SMI        
OL   SMI        JA        RLY             JJ        SMI 

I tried

SELECT 
      a.name,
      a.surname 
FROM PEOPLE a, PEOPLE b
WHERE (b.name = 'ak' AND b.surname ='smi' AND 
      (b.motherID = a.ID OR b.fatherid = ID))

Advertisement

Answer

You can use a SUB QUERY to achieve this.

Table Creation:

DECLARE @T TABLE(
ID INT,
NAME VARCHAR(MAX),
SURNAME VARCHAR(MAX),
MOTHERID INT,
FATHERID INT)

Table Insertion:

Insert into @t Values(0,'JJ','smi',NULL,NULL)
Insert into @t Values(1,'ja','rly',NULL,NULl)
Insert into @t Values(2,'ak','smi',0,1)
Insert into @t Values(3,'ol','smi',0,1)
Insert into @t Values(4,'oa','woo',2,3)
Insert into @t Values(5,'oe','boo',2,3)

Query:

SELECT S.NAME AS NAME,S.SURNAME AS SURNAME,S.FATHER_NAME ,S.FATHER_SURNAME,M.NAME AS 
MOTHER_NAME,M.SURNAME AS MOTHER_SURNAME 
FROM @T M INNER JOIN(
SELECT T2.NAME AS NAME,T2.SURNAME AS SURNAME,T1.NAME AS FATHER_NAME,T1.SURNAME AS 
FATHER_SURNAME,T2.MOTHERID
FROM @T T1
INNER JOIN @T T2 ON  T1.ID=T2.FATHERID 
WHERE T2.NAME IN ('AK','OL'))S ON M.ID=S.MOTHERID

Output:

enter image description here Also ,add the WHERE clause based on your parameter requirement.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement