Question

Table name is group. Column name is groupno,name,grouprefno,detail,undergroupno Sample data of group

groupno  name grouprefno   detail   undergroupno
1         A     001          abc        0
2         B     002          cde        0
3         AA    001001       abc        1
4         AC    001002       abc        1
5         AAA   001001001    DDD        3
6         DDD   001001002    ddd        3
7         www   001002001    223        4
8         eee   001002002    222        4

Now i want to get rows which name's are AA, AC and which are comes under the AA,AC

So i tried like this

select no from group where substring(grouprefno,1,
 (select length(grouprefno) from group where name ='AA'
  ))=(select grouprefno from group 
 where name ='AA' ) union all select no from group where substring(grouprefno,1,
 (select length(grouprefno) from group where name ='AC'
  ))=(select grouprefno from group 
 where groupname ='AC' )

Its Work Fine, But i want another solution because it has 2 sub query's in side of single query. It has any other feasible solution? Am using postgresql 9.1

Was it helpful?

Solution

Try:

WITH q AS(
  SELECT *
  FROM Table1
  WHERE name IN ('AA','AC')
)
SELECT * FROM q
UNION ALL
SELECT * FROM Table1 t
WHERE t.undergroupno IN (
       SELECT groupno FROM q
)

Demo: http://sqlfiddle.com/#!12/fce65/3

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top