Click here to Skip to main content
15,884,099 members
Home / Discussions / Database
   

Database

 
AnswerRe: Help with SQL query Pin
Mycroft Holmes30-May-09 23:06
professionalMycroft Holmes30-May-09 23:06 
GeneralRe: Help with SQL query Pin
Joe_P31-May-09 4:11
Joe_P31-May-09 4:11 
GeneralRe: Help with SQL query Pin
Mycroft Holmes31-May-09 11:10
professionalMycroft Holmes31-May-09 11:10 
GeneralRe: Help with SQL query Pin
Joe_P31-May-09 11:23
Joe_P31-May-09 11:23 
GeneralRe: Help with SQL query Pin
Mycroft Holmes31-May-09 11:36
professionalMycroft Holmes31-May-09 11:36 
GeneralRe: Help with SQL query Pin
Joe_P31-May-09 14:08
Joe_P31-May-09 14:08 
GeneralRe: Help with SQL query Pin
Mycroft Holmes31-May-09 17:24
professionalMycroft Holmes31-May-09 17:24 
GeneralRe: Help with SQL query Pin
smcnulty20004-Jun-09 1:24
smcnulty20004-Jun-09 1:24 
The way I read this problem all of the children must have the status of 10. If the parent has any children without the status ten then it doesn't come back.

This makes it a bear because you have to do something to match all children with all children who have a status of 10 and only return the parent if the children all come back as status 10.

So I'd use a counting mechanism.

select distinct x.parentid 
from (
select 
bhr.* , 
(select max(bh.status) from @BatchHeader bh where bh.bhid=bhr.child) status, 
(select count(*) from @BatchHeaderReference bhr2 where bhr2.parentid=bhr.parentid) cnt, 
(select count(*) from @BatchHeaderReference bhr3 inner join @BatchHeader bh3 on bh3.bhid=bhr3.child where bh3.status=10 and bhr3.parentid=bhr.parentid) truecount 
from @BatchHeaderReference bhr
) x
 where x.cnt=x.truecount 


I'm more of an oracle guy but the above will work.

Going from the inside out, which is usually the best way to deal with these problems, you create a count of all children. Then a count of all 'true' children- those with a status of 10. Then you put all of that inside of a wrapper which we call X.
From there we treat X as another table.

If you need to also check to see if the parent has a status of 10 then you just change it to this.

select distinct x.parentid  
from (
select 
bhr.* , 
(select max(bh.status) from @BatchHeader bh where bh.bhid=bhr.child) status, 
(select count(*) from @BatchHeaderReference bhr2 where bhr2.parentid=bhr.parentid) cnt, 
(select count(*) from @BatchHeaderReference bhr3 inner join @BatchHeader bh3 on bh3.bhid=bhr3.child where bh3.status=10 and bhr3.parentid=bhr.parentid) truecount, 
 (select max(bh.status) from @BatchHeader bh where bh.bhid=bhr.parentid) pstatus
from @BatchHeaderReference bhr  
  
) x
 where x.cnt=x.truecount 
 and x.pstatus=10 


Here you get the parent status, calling it pstatus, and then just check it at the last stage.

edit: the reason MAX is used is to stop certain errors from creeping in if you have the same value show up but multiple times. If you expect different values for status against a given id then you'd have to take another approach because this would be incorrect.

_____________________________
Those who study history are doomed to watch others repeat it. -Scott M.


AnswerRe: Help with SQL query Pin
Niladri_Biswas2-Jul-09 0:25
Niladri_Biswas2-Jul-09 0:25 
Questionget the inserted GUID Pin
Mohammad Al Hoss30-May-09 2:18
Mohammad Al Hoss30-May-09 2:18 
AnswerRe: get the inserted GUID Pin
Mycroft Holmes30-May-09 23:15
professionalMycroft Holmes30-May-09 23:15 
Questionhow do i use a primary key auto-generated in a table as a foreign key in another table? Pin
ChiSmile29-May-09 21:10
ChiSmile29-May-09 21:10 
AnswerRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
Mycroft Holmes29-May-09 23:40
professionalMycroft Holmes29-May-09 23:40 
GeneralRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
ChiSmile30-May-09 0:29
ChiSmile30-May-09 0:29 
GeneralRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
Mycroft Holmes30-May-09 0:48
professionalMycroft Holmes30-May-09 0:48 
GeneralRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
ChiSmile1-Jun-09 2:09
ChiSmile1-Jun-09 2:09 
GeneralRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
Mycroft Holmes1-Jun-09 3:33
professionalMycroft Holmes1-Jun-09 3:33 
GeneralRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
ChiSmile1-Jun-09 16:49
ChiSmile1-Jun-09 16:49 
GeneralRe: how do i use a primary key auto-generated in a table as a foreign key in another table? Pin
Mycroft Holmes1-Jun-09 17:17
professionalMycroft Holmes1-Jun-09 17:17 
Questionhow i can do this Pin
NNR_Noga29-May-09 4:22
NNR_Noga29-May-09 4:22 
AnswerRe: how i can do this Pin
Bassam Saoud29-May-09 4:43
Bassam Saoud29-May-09 4:43 
GeneralRe: how i can do this Pin
NNR_Noga29-May-09 5:15
NNR_Noga29-May-09 5:15 
GeneralRe: how i can do this Pin
Bassam Saoud29-May-09 5:29
Bassam Saoud29-May-09 5:29 
GeneralRe: how i can do this Pin
Mycroft Holmes29-May-09 23:44
professionalMycroft Holmes29-May-09 23:44 
QuestionNHibernate - Good or Bad Idea? Pin
Jacobus0129-May-09 3:00
Jacobus0129-May-09 3:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.