SQL SELECT de um grupo

votos
1

Suponha que temos o seguinte dados da tabela:

ID   parent    stage     submitted
1      1         1           1
2      1         2           1
3      1         3           0
4      1         4           0
5      5         1           1
6      5         2           1
7      5         3           1
8      5         4           1

Como você pode ver, temos 2 grupos (que têm o mesmo pai). Quero seleccionar a última fase que é submetido. No exemplo acima, eu quero selecionar os ID`s 2 e 8. Estou completamente perdido por isso, se alguém puder ajudar será apreciado muito. :)

Publicado 19/05/2009 em 14:03
fonte usuário
Em outras línguas...                            


4 respostas

votos
8

SELECT T.ID, T.PARENT, T.STAGE 
from
   T, 
   (
      select PARENT, MAX( STAGE) MAX_STAGE 
      from T
      where SUBMITTED = 1
      GROUP BY PARENT 
   ) M
where 
   T.STAGE = M.MAX_STAGE 
   AND T.PARENT = M.PARENT

Explicação: Em primeiro lugar, isolar a fase max para cada grupo com submetidos (seleccione o interior) = 1. Então, junte-se o resultado com a mesa real, para filtrar os registros com nenhum estágio máximo.

Respondeu 19/05/2009 em 14:12
fonte usuário

votos
1

Isso deve servir:

SELECT
     T1.id,
     T1.parent,
     T1.stage,
     T1.submitted
FROM
     Some_Table T1
LEFT OUTER JOIN Some_Table T2 ON
     T2.parent = T1.parent AND
     T2.submitted = 1 AND
     T2.stage > T1.stage
WHERE
     T1.submitted = 1 AND
     T2.id IS NULL
Respondeu 19/05/2009 em 14:13
fonte usuário

votos
1
Select Parent, max(Id)
From tbl t
Inner Join
(
    Select Parent, max(Stage) as Stage
    from tbl t
    Where Submitted = 1
    Group by Parent
) submitted
on t.Parent = submitted.parent and
    t.stage = submitted.stage
Group by Parent
Respondeu 19/05/2009 em 14:12
fonte usuário

votos
-1
SELECT * FROM Table WHERE ID = 2 OR ID = 8

É isso que voce quer?

Respondeu 19/05/2009 em 14:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more