[firebase-br] Dúvida em SQL

Wilson Rosa wsrosa em gmail.com
Qui Jan 16 12:16:29 -03 2014


Renan,

seguindo o que o Walter postou sobre tabelas auto-referenciadas, no seu
caso seria algo +/- assim:

SELECT
P1.ID_PEDIDO,
P1.ID_KIT
FROM
TB_PEDIDOS P1
JOIN
TB_PEDIDOS P2 ON P1.ID_PEDIDO = P2.ID_PEDIDO
JOIN
TB_PEDIDOS P3 ON P1.ID_PEDIDO = P3.ID_PEDIDO
JOIN
TB_PEDIDOS P4 ON P1.ID_PEDIDO = P4.ID_PEDIDO
WHERE
(
 (P1.ID_KIT = 1 AND P2.ID_KIT = 2 AND P3.ID_KIT = 3 AND P4.ID_KIT = 4) OR
 (P1.ID_KIT = 2 AND P2.ID_KIT = 3 AND P3.ID_KIT = 4 AND P4.ID_KIT = 1) OR
 (P1.ID_KIT = 3 AND P2.ID_KIT = 4 AND P3.ID_KIT = 1 AND P4.ID_KIT = 2) OR
 (P1.ID_KIT = 4 AND P2.ID_KIT = 1 AND P3.ID_KIT = 2 AND P4.ID_KIT = 3)
)
ORDER BY
P1.ID_PEDIDO,
P1.ID_KIT

como resultado:

ID_PEDIDO ID_KIT
10 1
10 2
10 3
10 4

Acho que é o que vc queria...





*Wilson Rosawsrosa em gmail.com <wsrosa em gmail.com>*



Em 15 de janeiro de 2014 22:21, W O <sistemas2000profesional em gmail.com>escreveu:

> Otra forma de solucionarlo es usando tablas autoreferenciadas. Son muy
> útiles para resolver esa clase de problemas:
>
>
> http://firebird21.wordpress.com/2013/07/20/entendiendo-las-tablas-autoreferenciadas/
>
> Saludos.
>
> Walter.
>
>
>
>
>
> 2014/1/15 Frederico Godoi <frederico.godoi em gmail.com>
>
> > Mais complexo mesmo.
> > Veja se assim atende ..
> >
> > SELECT ID_PEDIDO
> >    FROM TABELA TB1
> >  WHERE EXISTS ( SELECT ID FROM TABELA TB2 WHERE TB1.ID_PEDIDO =
> > TB2.ID_PEDIDO AND ID_KIT = 1 )
> >     AND EXISTS ( SELECT ID FROM TABELA TB3 WHERE TB1.ID_PEDIDO =
> > TB3.ID_PEDIDO AND ID_KIT = 2 )
> >     AND EXISTS ( SELECT ID FROM TABELA TB4 WHERE TB1.ID_PEDIDO =
> > TB4.ID_PEDIDO AND ID_KIT = 3 )
> >     AND EXISTS ( SELECT ID FROM TABELA TB5 WHERE TB1.ID_PEDIDO =
> > TB5.ID_PEDIDO AND ID_KIT = 4 )
> >
> >
> >
> > 2014/1/15 Renan Rogowski Pozzo <renanrpozzo em gmail.com>
> >
> > > Olá,
> > > fazendo dessa forma retorna todos os pedidos que tenham o ID_KIT 1 ou 2
> > ou
> > > 3 ou 4. Preciso que retorne apenas os que tenham todos esses ID_KIT.
> > >
> > > Abraço,
> > > Renan Rogowski Pozzo
> > >
> > > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará." Salmos
> > 37:5*
> > >
> > >
> > > Em 15 de janeiro de 2014 13:08, Frederico Godoi
> > > <frederico.godoi em gmail.com>escreveu:
> > >
> > > > SELECT ID_PEDIDO FROM TABELA WHERE ID_KIT IN ( 1,2,3,4  )
> > > >
> > > >
> > > > 2014/1/15 Renan Rogowski Pozzo <renanrpozzo em gmail.com>
> > > >
> > > > > Bom dia,
> > > > > tenho uma dúvida em um comando SQL.
> > > > >
> > > > > Tenho uma tabela que tem os seguintes registros:
> > > > >
> > > > > ID   ID_PEDIDO  ID_KIT
> > > > > 1          10              1
> > > > > 2          10              2
> > > > > 3          10              3
> > > > > 4          10              4
> > > > > 5          11              1
> > > > > 6          12              1
> > > > > 7          12              2
> > > > >
> > > > > O ID é minha chave primária.
> > > > > Gostaria de retornar em um comando SQL todos os ID_PEDIDO que
> possuem
> > > os
> > > > > ID_KIT 1,2,3,4. Por exemplo, o ID_PEDIDO 12 não poderia aparecer,
> > pois
> > > > ele
> > > > > tem os ID_KIT 1 e 2, mas não tem os ID_KIT 3 e 4.
> > > > >
> > > > > Alguém tem alguma sugestão?
> > > > >
> > > > > Abraço,
> > > > > Renan Rogowski Pozzo
> > > > >
> > > > > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará."
> Salmos
> > > > 37:5*
> > > > > ______________________________________________
> > > > > FireBase-BR (www.firebase.com.br) - Hospedado em
> www.locador.com.br
> > > > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Frederico Godoi
> > > > ______________________________________________
> > > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > > >
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> >
> >
> > --
> > Frederico Godoi
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista