<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Ajuda com uma query sql"]]></title>
		<link>http://www.guj.com.br/posts/list/20.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Ajuda com uma query sql"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Ajuda com uma query sql</title>
				<description><![CDATA[ Bom dia,<br /> Estou precisando de uma ajuda pra fazer uma query.<br /> <br /> Tenho 3 tabelas<br /> <br /> Numeros, Movimento, NumerosMovimento<br /> <br /> Preciso fazer uma consulta com as seguintes condições:<br /> <br /> - Numeros pode existir ou não na tabela NumerosMovimento.<br /> - Se Numeros existir, um campo da tabela Movimento não pode ser nulo.<br /> <br /> Obrigado pela atenção.<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985054/ajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985054/ajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 12:06:45]]> GMT</pubDate>
				<author><![CDATA[ Hebertbc]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ Boa tarde.<br /> <br /> 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 <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> Ou estou me precipitando e estamos falando unicamente da linguagem SQL?<br /> Abraços.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985065/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985065/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 12:24:07]]> GMT</pubDate>
				<author><![CDATA[ nel]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ Sim, fiz com join... mais ai tem o detalhe, o resultado mostra somente os numeros que não tem movimento, teria que mostrar os <br /> que tambem tem movimento, mais somente os que o status esta OK.<br /> <br /> a query ta assim<br /> <br /> [code]<br /> select sequencia,numero,movimento.codigo <br /> from numero<br /> inner join numeromovimento<br /> on numeromovimento.numero = numero.sequencia<br /> inner join movimento<br /> on movimento.codigo = numeromovimento.movimento<br /> where numero.campo1 = 123 and numero.campo2 = 456<br /> and movimento.codigo is null or movimento.status is not null<br /> and numero.numero in<br /> [/code]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985079/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985079/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 12:32:25]]> GMT</pubDate>
				<author><![CDATA[ Hebertbc]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ Vê se lhe dá uma luz:<br /> <br /> [code]select * from numeros n, movimentos m, numerosmovimentos nm<br /> where nm.numerosuid = n.numeros<br /> and nm.movimentosuid = m.movimentosuid<br /> and movimentos.status is not null[/code]<br /> <br /> <br /> Algo assim? Só exatamente qual campo de Movimentos não pode ser Nulo?<br /> Abraços.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985109/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985109/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 13:01:53]]> GMT</pubDate>
				<author><![CDATA[ nel]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ [quote=Hebertbc]Sim, fiz com join... mais ai tem o detalhe, o resultado mostra somente os numeros que não tem movimento, teria que mostrar os <br /> que tambem tem movimento, mais somente os que o status esta OK.<br /> <br /> a query ta assim<br /> <br /> [code]<br /> select sequencia,numero,movimento.codigo <br /> from numero<br /> inner join numeromovimento<br /> on numeromovimento.numero = numero.sequencia<br /> inner join movimento<br /> on movimento.codigo = numeromovimento.movimento<br /> where numero.campo1 = 123 and numero.campo2 = 456<br /> and movimento.codigo is null or movimento.status is not null<br /> and numero.numero in<br /> [/code][/quote]<br /> <br /> 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.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985132/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985132/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 13:14:17]]> GMT</pubDate>
				<author><![CDATA[ mjmendes]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ [code]<br /> select sequencia,numero,movimento.codigo   <br /> from numero  <br /> inner join numeromovimento  <br /> on numeromovimento.numero = numero.sequencia  <br /> inner join movimento  <br /> on movimento.codigo = numeromovimento.movimento  <br /> where (numero.campo1 = 123 and numero.campo2 = 456  <br /> and movimento.codigo is null) or (movimento.status is not null  <br /> and numero.numero in ?)  [/code]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985141/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985141/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 13:24:05]]> GMT</pubDate>
				<author><![CDATA[ Scoobydoo]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ Acredito que a tabela NumeroMovimento seja a tabela de ligação, certo?<br /> <br /> não sabemos os campos das tabelas, mas digamos que sejam: <br /> <br /> [code]<br /> Numero<br /> -----------------<br /> idnumero<br /> numero<br /> ...<br /> <br /> <br /> Movimento<br /> -----------------<br /> idmovimento<br /> movimento<br /> ...<br /> <br /> <br /> NumeroMovimento<br /> -----------------<br /> idnumero<br /> idmovimento<br /> ...<br /> [/code]<br /> <br /> <br /> sql: não sei qual o banco de dados, mas tentei fazr usando técnica de outer join<br /> <br /> [code]<br /> select <br />        n.numero, <br />        m.movimento<br /> from  <br />        numero n left join <br />        numeromovimento nm on (n.numero = nm.numero)  join <br />        movimento m on (nm.movimento = m.movimento) <br /> [/code]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985164/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985164/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 13:46:13]]> GMT</pubDate>
				<author><![CDATA[ g4j]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ [quote=g4j]Acredito que a tabela NumeroMovimento seja a tabela de ligação, certo?<br /> <br /> não sabemos os campos das tabelas, mas digamos que sejam: <br /> <br /> [code]<br /> Numero<br /> -----------------<br /> idnumero<br /> numero<br /> ...<br /> <br /> <br /> Movimento<br /> -----------------<br /> idmovimento<br /> movimento<br /> ...<br /> <br /> <br /> NumeroMovimento<br /> -----------------<br /> idnumero<br /> idmovimento<br /> ...<br /> [/code]<br /> <br /> <br /> sql: não sei qual o banco de dados, mas tentei fazr usando técnica de outer join<br /> <br /> [code]<br /> select <br />        n.numero, <br />        m.movimento<br /> from  <br />        numero n left join <br />        numeromovimento nm on (n.numero = nm.numero)  join <br />        movimento m on (nm.movimento = m.movimento) <br /> [/code][/quote]<br /> <br /> 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.<br /> <br /> O que eu quero é uma relação de numero que não possuem movimento + os numeros que possuem movimento efetivado.<br /> <br /> Ex. <br /> [code]<br /> o numero 123 tem 5 movimentos mais somente 4 estão efetivados. (Esse resultado não deve aparecer)<br /> o numero 456 tem 3 movimentos e os 3 estão efetivados. (Esse numero aparece no resultado)<br /> o numero 789 num tem nenhum movimento. (Esse numero aparece no resultado)<br /> [/code]<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985208/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985208/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 14:26:04]]> GMT</pubDate>
				<author><![CDATA[ Hebertbc]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ [quote=Hebertbc]<br /> <br /> 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.<br /> <br /> O que eu quero é uma relação de numero que não possuem movimento + os numeros que possuem movimento efetivado.<br /> [/quote]<br /> <br /> Entendi. Mas como você sabe que o número possui movimento efetivado? Precisa testar isso no sql tambem!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985215/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985215/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 14:30:32]]> GMT</pubDate>
				<author><![CDATA[ g4j]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ [quote=g4j][quote=Hebertbc]<br /> <br /> 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.<br /> <br /> O que eu quero é uma relação de numero que não possuem movimento + os numeros que possuem movimento efetivado.<br /> [/quote]<br /> <br /> Entendi. Mas como você sabe que o número possui movimento efetivado? Precisa testar isso no sql tambem![/quote]<br /> <br /> na tabela movimento tem o campo status, ele não pode ser nulo]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/985219/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/985219/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Wed, 27 Jan 2010 14:39:04]]> GMT</pubDate>
				<author><![CDATA[ Hebertbc]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ 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 ? <br /> <br /> edit: acho que entendi, a regra seria mais ou menos assim:<br /> <br /> 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 ?<br /> <br /> []'s<br /> <br /> edit2: se for a regra acima, você com duas tabelas já da pra fazer, segue dump do mysql:<br /> <br /> [code]<br /> --<br /> -- Estrutura da tabela `consultas`<br /> --<br /> <br /> CREATE TABLE IF NOT EXISTS `consultas` (<br />   `id` int(11) NOT NULL AUTO_INCREMENT,<br />   `nome` varchar(255) NOT NULL DEFAULT '',<br />   PRIMARY KEY (`id`)<br /> ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;<br /> <br /> --<br /> -- Extraindo dados da tabela `consultas` &lt;----- ESSA TABELA AQUI NÃO PRECISA.<br /> --<br /> <br /> INSERT INTO `consultas` (`id`, `nome`) VALUES<br /> (1, 'Pronto Socorro'),<br /> (2, 'Enferemaria');<br /> <br /> -- --------------------------------------------------------<br /> <br /> --<br /> -- Estrutura da tabela `consultas_marcadas`<br /> --<br /> <br /> CREATE TABLE IF NOT EXISTS `consultas_marcadas` (<br />   `id_pessoa` int(11) NOT NULL,<br />   `id_consulta` int(11) NOT NULL,<br />   `status` tinyint(1) DEFAULT NULL<br /> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;<br /> <br /> --<br /> -- Extraindo dados da tabela `consultas_marcadas`<br /> --<br /> <br /> INSERT INTO `consultas_marcadas` (`id_pessoa`, `id_consulta`, `status`) VALUES<br /> (1, 2, NULL),<br /> (2, 2, 1),<br /> (3, 2, NULL),<br /> (2, 2, NULL),<br /> (4, 1, 1),<br /> (2, 1, NULL);<br /> <br /> -- --------------------------------------------------------<br /> <br /> --<br /> -- Estrutura da tabela `pessoas`<br /> --<br /> <br /> CREATE TABLE IF NOT EXISTS `pessoas` (<br />   `id` int(11) NOT NULL AUTO_INCREMENT,<br />   `nome` varchar(255) DEFAULT '',<br />   PRIMARY KEY (`id`)<br /> ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;<br /> <br /> --<br /> -- Extraindo dados da tabela `pessoas`<br /> --<br /> <br /> INSERT INTO `pessoas` (`id`, `nome`) VALUES<br /> (1, 'João'),<br /> (2, 'Maria'),<br /> (3, 'Juckinha'),<br /> (4, 'Zezé'),<br /> (5, 'Wryel');<br /> <br /> [/code]<br /> <br /> SELECT que mostra a quantidade de consultas das pessoas:<br /> <br /> [code]<br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_marcadas.status) AS ConsultasAtivas, COUNT(consultas_marcadas.id_pessoa) TotalConsultas FROM pessoas <br /> LEFT JOIN consultas_marcadas ON pessoas.id = consultas_marcadas.id_pessoa <br /> GROUP BY pessoas.id<br /> [/code]<br /> <br /> SELECT que mostra apenas pessoas com numero de quantidade de consultas iguais:<br /> <br /> [code]<br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_marcadas.status) AS ConsultasAtivas, COUNT(consultas_marcadas.id_pessoa) TotalConsultas FROM pessoas <br /> LEFT JOIN consultas_marcadas ON pessoas.id = consultas_marcadas.id_pessoa <br /> GROUP BY pessoas.id<br /> HAVING ConsultasAtivas = TotalConsultas<br /> [/code]<br /> <br /> lembrando que COUNT() quanto passa em um campo nulo, ele não conta(?) desde que não seja em um GROUP BY<br /> <br /> só adaptar agora conforme sua regra de negócio :|]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/991394/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/991394/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Sat, 6 Feb 2010 00:00:35]]> GMT</pubDate>
				<author><![CDATA[ WRYEL]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ Certo, não lembro bem todos os campos das tabelas mais os principais são esses:<br /> <br /> [code]<br /> <br /> NumerosMovimento<br /> {<br /> id<br /> numeroMovimentado<br /> movimento<br /> tipoMovimentoNumero<br /> DataMovimentoNumero<br /> }<br /> <br /> Movimento<br /> {<br /> id<br /> dataCadastro<br /> dataEfetivacao<br /> tipo<br /> status<br /> }<br /> <br /> Numero<br /> {<br /> id<br /> numero<br /> idCliente<br /> idPropriedade<br /> }<br /> <br /> DestinoFinal<br /> {<br /> id<br /> numero<br /> idCliente<br /> idPropriedade<br /> ...<br /> }<br /> [/code]<br /> <br /> 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.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/991487/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/991487/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Sat, 6 Feb 2010 13:55:28]]> GMT</pubDate>
				<author><![CDATA[ Hebertbc]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ [quote=Hebertbc]Certo, não lembro bem todos os campos das tabelas mais os principais são esses:<br /> <br /> 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.[/quote]<br /> <br /> E que tipo de consulta eu deveria agora levar em consideração nessa tabela destino final ? :P<br /> <br /> toda via, vamos lá, vou mostrar o que eu entendi:<br /> <br /> a primeira query você consultava com:<br /> <br /> [code]<br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_marcadas.status) AS ConsultasAtivas, COUNT(consultas_marcadas.id_pessoa) TotalConsultas FROM pessoas   <br /> LEFT JOIN consultas_marcadas ON pessoas.id = consultas_marcadas.id_pessoa   <br /> GROUP BY pessoas.id  <br /> [/code]<br /> <br /> 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:<br /> <br /> [code]<br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_marcadas.status) AS ConsultasAtivas, COUNT(consultas_marcadas.id_pessoa) TotalConsultas FROM pessoas   <br /> LEFT JOIN consultas_marcadas ON pessoas.id = consultas_marcadas.id_pessoa   <br /> GROUP BY pessoas.id  <br /> UNION ALL <br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_saidas.status) AS ConsultasAtivas, COUNT(consultas_saidas.id_pessoa) TotalConsultas FROM pessoas <br /> LEFT JOIN consultas_saidas ON pessoas.id = consultas_saidas.id_pessoa   <br /> GROUP BY pessoas.id<br /> [/code]<br /> <br /> Temos os nomes duplicados por se tratar de duas tabelas diferentes, então eu vou agrupalas para um resultado só:<br /> <br /> [code]<br /> SELECT nome, SUM(ConsultasAtivas), SUM(TotalConsultas) FROM ( SELECT pessoas.id, pessoas.nome, COUNT(consultas_marcadas.status) AS ConsultasAtivas, COUNT(consultas_marcadas.id_pessoa) TotalConsultas FROM pessoas   <br /> LEFT JOIN consultas_marcadas ON pessoas.id = consultas_marcadas.id_pessoa   <br /> GROUP BY pessoas.id  <br /> UNION ALL <br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_saidas.status) AS ConsultasAtivas, COUNT(consultas_saidas.id_pessoa) TotalConsultas FROM pessoas <br /> LEFT JOIN consultas_saidas ON pessoas.id = consultas_saidas.id_pessoa   <br /> GROUP BY pessoas.id ) AS NomeTemporarioProMysql <br /> GROUP BY id<br /> [/code]<br /> <br /> Agora, sua condição para apenas os que ja tem consultas abertas e fechadas iguais :<br /> <br /> [code]<br /> SELECT nome, SUM(ConsultasAtivas) AS ativas, SUM(TotalConsultas) AS total FROM<br /> (<br /> <br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_marcadas.status) AS ConsultasAtivas, COUNT(consultas_marcadas.id_pessoa) TotalConsultas FROM pessoas   <br /> LEFT JOIN consultas_marcadas ON pessoas.id = consultas_marcadas.id_pessoa   <br /> GROUP BY pessoas.id  <br /> <br /> UNION ALL <br /> <br /> SELECT pessoas.id, pessoas.nome, COUNT(consultas_saidas.status) AS ConsultasAtivas, COUNT(consultas_saidas.id_pessoa) TotalConsultas FROM pessoas <br /> LEFT JOIN consultas_saidas ON pessoas.id = consultas_saidas.id_pessoa   <br /> GROUP BY pessoas.id <br /> <br /> ) AS NomeTemporarioProMysql <br /> GROUP BY id <br /> HAVING ativas = total<br /> [/code]<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/991729/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/991729/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Sun, 7 Feb 2010 23:40:22]]> GMT</pubDate>
				<author><![CDATA[ WRYEL]]></author>
			</item>
			<item>
				<title>Re:Ajuda com uma query sql</title>
				<description><![CDATA[ Vou testar aqui e posto os resultados.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/196571/992462/reajuda-com-uma-query-sql
</guid>
				<link>http://www.guj.com.br/prepost/196571/992462/reajuda-com-uma-query-sql
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 10:14:11]]> GMT</pubDate>
				<author><![CDATA[ Hebertbc]]></author>
			</item>
	</channel>
</rss>
