Ajuda com uma query sql  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
Hebertbc
Debugger
[Avatar]

Membro desde: 07/11/2008 20:27:15
Mensagens: 51
Localização: Campo Grande / MS
Offline

Bom dia,
Estou precisando de uma ajuda pra fazer uma query.

Tenho 3 tabelas

Numeros, Movimento, NumerosMovimento

Preciso fazer uma consulta com as seguintes condições:

- Numeros pode existir ou não na tabela NumerosMovimento.
- Se Numeros existir, um campo da tabela Movimento não pode ser nulo.

Obrigado pela atenção.


C'est la vie monsieur excentrique...
nel
JavaEvangelist

Membro desde: 01/10/2009 13:51:10
Mensagens: 452
Offline

Boa tarde.

Pode simplesmente fazer um Join entre as tabelas e buscar as informações que necessita. Sobre as duas condições, eu diria para montar a Query no Java utilizando StringBuilder e usar dos famosos if´s

Ou estou me precipitando e estamos falando unicamente da linguagem SQL?
Abraços.

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
Hebertbc
Debugger
[Avatar]

Membro desde: 07/11/2008 20:27:15
Mensagens: 51
Localização: Campo Grande / MS
Offline

Sim, fiz com join... mais ai tem o detalhe, o resultado mostra somente os numeros que não tem movimento, teria que mostrar os
que tambem tem movimento, mais somente os que o status esta OK.

a query ta assim

This message was edited 2 times. Last update was at 27/01/2010 12:38:16


C'est la vie monsieur excentrique...
nel
JavaEvangelist

Membro desde: 01/10/2009 13:51:10
Mensagens: 452
Offline

Vê se lhe dá uma luz:




Algo assim? Só exatamente qual campo de Movimentos não pode ser Nulo?
Abraços.

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
mjmendes
HelloWorld
[Avatar]

Membro desde: 20/03/2009 14:51:45
Mensagens: 14
Offline

Hebertbc wrote:Sim, fiz com join... mais ai tem o detalhe, o resultado mostra somente os numeros que não tem movimento, teria que mostrar os
que tambem tem movimento, mais somente os que o status esta OK.

a query ta assim



Somente uma coisa, se seu where tem "or" e "and" e não tem parênteses, alguma coisa provavelmente vai dar errado, verifique exatamente onde o "or" deve funcionar e isole essa expressão com parênteses.
Scoobydoo
JavaGuru
[Avatar]
Membro desde: 19/01/2010 14:22:47
Mensagens: 262
Localização: Gaspar
Offline



guishrek111@hotmail.com
Java J2ME Programmer
[Email] [WWW] [MSN]
g4j
Virtual Machine Man
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 673
Localização: Curitiba
Offline

Acredito que a tabela NumeroMovimento seja a tabela de ligação, certo?

não sabemos os campos das tabelas, mas digamos que sejam:




sql: não sei qual o banco de dados, mas tentei fazr usando técnica de outer join

This message was edited 1 time. Last update was at 27/01/2010 13:47:32


Gerson

SCJP 5.0
SCWCD 5.0
Próxima: SCBCD 5.0

Hebertbc
Debugger
[Avatar]

Membro desde: 07/11/2008 20:27:15
Mensagens: 51
Localização: Campo Grande / MS
Offline

g4j wrote:Acredito que a tabela NumeroMovimento seja a tabela de ligação, certo?

não sabemos os campos das tabelas, mas digamos que sejam:




sql: não sei qual o banco de dados, mas tentei fazr usando técnica de outer join



Isso mesmo, minhas tabelas tem esse formato, o detalhe que ta acontecendo é que quando numero possui um movimento em aberto ainda ele não pode sair no resultado, resolvendo com isso (movimento.status is not null) mais ae aparece o resultado dos numeros que possuem outros movimentos efetivados anteriormente.

O que eu quero é uma relação de numero que não possuem movimento + os numeros que possuem movimento efetivado.

Ex.

This message was edited 2 times. Last update was at 27/01/2010 14:33:12


C'est la vie monsieur excentrique...
g4j
Virtual Machine Man
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 673
Localização: Curitiba
Offline

Hebertbc wrote:

Isso mesmo, minhas tabelas tem esse formato, o detalhe que ta acontecendo é que quando numero possui um movimento em aberto ainda ele não pode sair no resultado, resolvendo com isso (movimento.status is not null) mais ae aparece o resultado dos numeros que possuem movimento efetivado do mesmo jeito.

O que eu quero é uma relação de numero que não possuem movimento + os numeros que possuem movimento efetivado.


Entendi. Mas como você sabe que o número possui movimento efetivado? Precisa testar isso no sql tambem!

Gerson

SCJP 5.0
SCWCD 5.0
Próxima: SCBCD 5.0

Hebertbc
Debugger
[Avatar]

Membro desde: 07/11/2008 20:27:15
Mensagens: 51
Localização: Campo Grande / MS
Offline

g4j wrote:
Hebertbc wrote:

Isso mesmo, minhas tabelas tem esse formato, o detalhe que ta acontecendo é que quando numero possui um movimento em aberto ainda ele não pode sair no resultado, resolvendo com isso (movimento.status is not null) mais ae aparece o resultado dos numeros que possuem movimento efetivado do mesmo jeito.

O que eu quero é uma relação de numero que não possuem movimento + os numeros que possuem movimento efetivado.


Entendi. Mas como você sabe que o número possui movimento efetivado? Precisa testar isso no sql tambem!


na tabela movimento tem o campo status, ele não pode ser nulo

C'est la vie monsieur excentrique...
WRYEL
JavaTeenager

Membro desde: 03/03/2008 21:27:20
Mensagens: 171
Localização: São Paulo
Offline

Eu sei que você postou um pouco da regra de negocio ali em cima mas, tem como detalhar melhor ? tipo postando o nome e os campos das tabelas reais ?

edit: acho que entendi, a regra seria mais ou menos assim:

vc tem por exemplo uma tabela de pessoa, e uma tabela de tipos de consulta, e numa terceira tabela voce guardaria uma consulta marcada por uma pessoa, e o status daquela consulta ?

[]'s

edit2: se for a regra acima, você com duas tabelas já da pra fazer, segue dump do mysql:



SELECT que mostra a quantidade de consultas das pessoas:



SELECT que mostra apenas pessoas com numero de quantidade de consultas iguais:



lembrando que COUNT() quanto passa em um campo nulo, ele não conta(?) desde que não seja em um GROUP BY

só adaptar agora conforme sua regra de negócio

This message was edited 3 times. Last update was at 06/02/2010 01:13:43


/*
* http://www.wryel.com.br
*/
[WWW] [MSN]
Hebertbc
Debugger
[Avatar]

Membro desde: 07/11/2008 20:27:15
Mensagens: 51
Localização: Campo Grande / MS
Offline

Certo, não lembro bem todos os campos das tabelas mais os principais são esses:



Obs. : Dependendo to tipo do movimento, após a efetivação do movimento os numeros são removidos da tabela Numero e vão pra tabela DestinFinal. Não tinha colocado a tabela DestinoFInal pq na query se já não encontrasse o numero na tabela Numero era pq o mesmo não existia ou ja tinha ido pro destino final.

C'est la vie monsieur excentrique...
WRYEL
JavaTeenager

Membro desde: 03/03/2008 21:27:20
Mensagens: 171
Localização: São Paulo
Offline

Hebertbc wrote:Certo, não lembro bem todos os campos das tabelas mais os principais são esses:

Obs. : Dependendo to tipo do movimento, após a efetivação do movimento os numeros são removidos da tabela Numero e vão pra tabela DestinFinal. Não tinha colocado a tabela DestinoFInal pq na query se já não encontrasse o numero na tabela Numero era pq o mesmo não existia ou ja tinha ido pro destino final.


E que tipo de consulta eu deveria agora levar em consideração nessa tabela destino final ?

toda via, vamos lá, vou mostrar o que eu entendi:

a primeira query você consultava com:



ai você me disse que queria consular uma segunda tabela, que la tb poderiamos ter consulta em aberto ... então, eu dupliquei a tabela e apenas mudei de nome para diferenciar, dai montei a query para pegar consultas nas duas tabelas:



Temos os nomes duplicados por se tratar de duas tabelas diferentes, então eu vou agrupalas para um resultado só:



Agora, sua condição para apenas os que ja tem consultas abertas e fechadas iguais :




/*
* http://www.wryel.com.br
*/
[WWW] [MSN]
Hebertbc
Debugger
[Avatar]

Membro desde: 07/11/2008 20:27:15
Mensagens: 51
Localização: Campo Grande / MS
Offline

Vou testar aqui e posto os resultados.

C'est la vie monsieur excentrique...
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team