Re: [delphi-br] SQL muito complexa, unir 2 select
voce pode usar o left join . - Original Message - From: Hélder Rodrigues To: delphi-br@yahoogrupos.com.br Sent: Friday, January 28, 2005 10:34 AM Subject: Re: [delphi-br] SQL muito complexa, unir 2 select Oi Leandro ... Obrigado por responder a minha dúvida ... mas eu vi na ajuda do Delphi ... que para usar UNION ... a estrutura das duas consultas tem que ser a mesma ... e no caso não vai dar pra usar ... ... e no caso, union junta o resultado das duas consultas uma embaixo da outra ... e na verdade eu estava querendo é ter o resultado de 2 colunas com um where diferente para uma e para outra ... mandei um segundo email com o título SQL muito complexa, unir 2 select (2) !!! ... dá uma olhada ... às vezes vc consegue me ajudar ... Novamente, obrigado. Att. Hélder - [EMAIL PROTECTED] escreveu: Use UNION ALL entre os selects para uní-los. Só que o group by só sera aceito no ultimo select. Se quiser, pode usar group by pelo numero da coluna. Por exemplo, se quiser agrupar pela primeira e segunta colunas, use: GROUP BY 1,2 Att, Leandro -- Open WebMail Project (http://openwebmail.org) -- Original Message --- From: Hélder Rodrigues [EMAIL PROTECTED] To: delphi-br@yahoogrupos.com.br delphi-br@yahoogrupos.com.br, delphi- [EMAIL PROTECTED] [EMAIL PROTECTED], lista- [EMAIL PROTECTED] [EMAIL PROTECTED] Sent: Fri, 28 Jan 2005 10:39:18 -0200 Subject: [delphi-br] SQL muito complexa, unir 2 select Bom dia amigos, Estou precisando unir duas consultas SQL ... (a base de dados utilizada tabelas Paradox) e não sei qual cláusula usar (não tenho muito experiência no assunto ...) devo usar UNION ou JOIN ??? A 1ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_fatpl.Periodo) as Periodo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as Custo FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA , (Cq_fatpl.Periodo) ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 140 registros. A 2ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as CustoAte FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 157 registros. * A diferença das duas é que a 1ª pega somente os registros do período 10 e a 2ª pega todos os registros até o período 10 incluindo o período 10 ... Tem como unir essas duas consultas ? Alguém pode me dar uma dica ? Desde já muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos --- End of Original Message --- [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse
[delphi-br] SQL muito complexa, unir 2 select
Bom dia amigos, Estou precisando unir duas consultas SQL ... (a base de dados utilizada tabelas Paradox) e não sei qual cláusula usar (não tenho muito experiência no assunto ...) devo usar UNION ou JOIN ??? A 1ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_fatpl.Periodo) as Periodo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as Custo FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA , (Cq_fatpl.Periodo) ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 140 registros. A 2ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as CustoAte FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 157 registros. * A diferença das duas é que a 1ª pega somente os registros do período 10 e a 2ª pega todos os registros até o período 10 incluindo o período 10 ... Tem como unir essas duas consultas ? Alguém pode me dar uma dica ? Desde já muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] SQL muito complexa, unir 2 select
Use UNION ALL entre os selects para uní-los. Só que o group by só sera aceito no ultimo select. Se quiser, pode usar group by pelo numero da coluna. Por exemplo, se quiser agrupar pela primeira e segunta colunas, use: GROUP BY 1,2 Att, Leandro -- Open WebMail Project (http://openwebmail.org) -- Original Message --- From: Hélder Rodrigues [EMAIL PROTECTED] To: delphi-br@yahoogrupos.com.br delphi-br@yahoogrupos.com.br, delphi- [EMAIL PROTECTED] [EMAIL PROTECTED], lista- [EMAIL PROTECTED] [EMAIL PROTECTED] Sent: Fri, 28 Jan 2005 10:39:18 -0200 Subject: [delphi-br] SQL muito complexa, unir 2 select Bom dia amigos, Estou precisando unir duas consultas SQL ... (a base de dados utilizada tabelas Paradox) e não sei qual cláusula usar (não tenho muito experiência no assunto ...) devo usar UNION ou JOIN ??? A 1ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_fatpl.Periodo) as Periodo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as Custo FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA , (Cq_fatpl.Periodo) ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 140 registros. A 2ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as CustoAte FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 157 registros. * A diferença das duas é que a 1ª pega somente os registros do período 10 e a 2ª pega todos os registros até o período 10 incluindo o período 10 ... Tem como unir essas duas consultas ? Alguém pode me dar uma dica ? Desde já muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos --- End of Original Message --- -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[delphi-br] SQL muito complexa, unir 2 select (2) !!!
(continuação da minha mensagem anterior) Oi pessoal ... Na verdade eu queria ter em uma mesma consulta, duas colunas: - Uma com o resultado do Custo no período 10; - Outra com o resulta do Custo até o período 10, incluindo o período 10; - Será que alguém pode me dar uma dica ? Já vi que a cláusula UNION não serve ... dá pra fazer isso usando JOIN ?? Novamente, muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] SQL muito complexa, unir 2 select
Oi Leandro ... Obrigado por responder a minha dúvida ... mas eu vi na ajuda do Delphi ... que para usar UNION ... a estrutura das duas consultas tem que ser a mesma ... e no caso não vai dar pra usar ... ... e no caso, union junta o resultado das duas consultas uma embaixo da outra ... e na verdade eu estava querendo é ter o resultado de 2 colunas com um where diferente para uma e para outra ... mandei um segundo email com o título SQL muito complexa, unir 2 select (2) !!! ... dá uma olhada ... às vezes vc consegue me ajudar ... Novamente, obrigado. Att. Hélder - [EMAIL PROTECTED] escreveu: Use UNION ALL entre os selects para uní-los. Só que o group by só sera aceito no ultimo select. Se quiser, pode usar group by pelo numero da coluna. Por exemplo, se quiser agrupar pela primeira e segunta colunas, use: GROUP BY 1,2 Att, Leandro -- Open WebMail Project (http://openwebmail.org) -- Original Message --- From: Hélder Rodrigues [EMAIL PROTECTED] To: delphi-br@yahoogrupos.com.br delphi-br@yahoogrupos.com.br, delphi- [EMAIL PROTECTED] [EMAIL PROTECTED], lista- [EMAIL PROTECTED] [EMAIL PROTECTED] Sent: Fri, 28 Jan 2005 10:39:18 -0200 Subject: [delphi-br] SQL muito complexa, unir 2 select Bom dia amigos, Estou precisando unir duas consultas SQL ... (a base de dados utilizada tabelas Paradox) e não sei qual cláusula usar (não tenho muito experiência no assunto ...) devo usar UNION ou JOIN ??? A 1ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_fatpl.Periodo) as Periodo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as Custo FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA , (Cq_fatpl.Periodo) ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 140 registros. A 2ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as CustoAte FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 157 registros. * A diferença das duas é que a 1ª pega somente os registros do período 10 e a 2ª pega todos os registros até o período 10 incluindo o período 10 ... Tem como unir essas duas consultas ? Alguém pode me dar uma dica ? Desde já muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos --- End of Original Message --- [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] SQL muito complexa, unir 2 select
Você pode fazer isso com UNION (já que os campos retornados são os mesmos) da seguinte forma: Primeira Consulta UNION Segunda Consulta Nielsen On Fri, 28 Jan 2005 10:39:18 -0200, Hélder Rodrigues [EMAIL PROTECTED] wrote: Bom dia amigos, Estou precisando unir duas consultas SQL ... (a base de dados utilizada tabelas Paradox) e não sei qual cláusula usar (não tenho muito experiência no assunto ...) devo usar UNION ou JOIN ??? A 1ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_fatpl.Periodo) as Periodo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as Custo FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA , (Cq_fatpl.Periodo) ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 140 registros. A 2ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as CustoAte FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 157 registros. * A diferença das duas é que a 1ª pega somente os registros do período 10 e a 2ª pega todos os registros até o período 10 incluindo o período 10 ... Tem como unir essas duas consultas ? Alguém pode me dar uma dica ? Desde já muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] SQL muito complexa, unir 2 select
Oi Nielsen ... obrigado por responder ... Mas os campos retornados não são os mesmos ... na segunda pesquisa não tem o campo período ... pois eu quero saber o total geral (where periodo = 10) independente do total no período 1,2,3 ... etc ... Tem como fazer isso ? Obrigado. Att. Hélder Nielsen Cassiano Simões escreveu: Você pode fazer isso com UNION (já que os campos retornados são os mesmos) da seguinte forma: Primeira Consulta UNION Segunda Consulta Nielsen On Fri, 28 Jan 2005 10:39:18 -0200, Hélder Rodrigues [EMAIL PROTECTED] wrote: Bom dia amigos, Estou precisando unir duas consultas SQL ... (a base de dados utilizada tabelas Paradox) e não sei qual cláusula usar (não tenho muito experiência no assunto ...) devo usar UNION ou JOIN ??? A 1ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_fatpl.Periodo) as Periodo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as Custo FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA , (Cq_fatpl.Periodo) ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 140 registros. A 2ª consulta é essa: -- SELECT Cq_dd.CodCQ_MOEDA , Cq_dd.CodCQ_CLASS , (Cq_insum.Descricao) as Insumo, (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (sum(Cq_fatpl.QuantidadeNaoAcumulada * Cq_dd.QuantInsumo * Cq_dd.CustoUnitario)) as CustoAte FROM Cq_fatpl.DB Cq_fatpl , Cq_dd.DB Cq_dd , Cq_Ativ.DB Cq_Ativ, Cq_insum.DB Cq_insum WHERE (Cq_fatpl.CodCQ_ATIV = Cq_dd.CodCQ_ATIV) AND (Cq_fatpl.CodCQ_ATIV = Cq_Ativ.CodCQ_ATIV) AND (Cq_dd.CodCQ_INSUM = Cq_insum.CodCQ_INSUM) AND ( (Cq_fatpl.Periodo = '10') AND (Cq_dd.CodCQ_CLASS = '7') ) GROUP BY (Cq_Ativ.NomeAtividade), (Cq_Ativ.IndiceOutLine), (Cq_Ativ.IndicePaterno), (Cq_insum.Descricao) , Cq_dd.CodCQ_CLASS , Cq_dd.CodCQ_MOEDA ORDER BY Cq_Ativ.IndiceOutLine, Cq_Ativ.IndicePaterno -- ... e ela retorna 157 registros. * A diferença das duas é que a 1ª pega somente os registros do período 10 e a 2ª pega todos os registros até o período 10 incluindo o período 10 ... Tem como unir essas duas consultas ? Alguém pode me dar uma dica ? Desde já muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] SQL muito complexa, unir 2 select (2) !!!
Opa, vc pode adaptar. Exemplo SELECT PRODUTO, SUM(CUSTO) AS CUSTO_PERIODO_10, 0.00 AS CUSTO_ATE_PERIODO_10 FROM TABELATAL WHERE DATA BETWEEN :DATAINI AND :DATAFIN UNION ALL SELECT PRODUTO, 0.00, SUM(CUSTO) FROM TABELATAL WHERE DATA = :DATAFIN GROUP BY 1 ORDER BY 1 Espero que ajude. Leandro -- Open WebMail Project (http://openwebmail.org) -- Original Message --- From: Hélder Rodrigues [EMAIL PROTECTED] To: delphi-br@yahoogrupos.com.br delphi-br@yahoogrupos.com.br, delphi- [EMAIL PROTECTED] [EMAIL PROTECTED], lista- [EMAIL PROTECTED] [EMAIL PROTECTED] Sent: Fri, 28 Jan 2005 11:26:43 -0200 Subject: [delphi-br] SQL muito complexa, unir 2 select (2) !!! (continuação da minha mensagem anterior) Oi pessoal ... Na verdade eu queria ter em uma mesma consulta, duas colunas: - Uma com o resultado do Custo no período 10; - Outra com o resulta do Custo até o período 10, incluindo o período 10; - Será que alguém pode me dar uma dica ? Já vi que a cláusula UNION não serve ... dá pra fazer isso usando JOIN ?? Novamente, muito obrigado. Atenciosamente, Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos --- End of Original Message --- -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] SQL muito complexa, unir 2 select
Então faça o seguinte: Se a segunda consulta não tem o campo período, então crie, na mesma posição na segunda consulta, uma expressão do tipo 0 AS Periodo, para que os campos possão bater. O importante é que o mesmo número de campos esteja presente nas duas consultas, e os campos de cada consulta sejam equivalentes (do mesmo tipo). Aí seu UNION vai funcionar. Se existir mais algum campo em qualquer uma das consultas que não tenha na outra, faça da mesma forma, até que as duas tenham estruturas equivalentes. Nielsen On Fri, 28 Jan 2005 11:46:46 -0200, Hélder Rodrigues [EMAIL PROTECTED] wrote: Oi Nielsen ... obrigado por responder ... Mas os campos retornados não são os mesmos ... na segunda pesquisa não tem o campo período ... pois eu quero saber o total geral (where periodo = 10) independente do total no período 1,2,3 ... etc ... Tem como fazer isso ? Obrigado. Att. Hélder -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html