Ir para conteúdo
Fórum Script Brasil

Vulcão

Membros
  • Total de itens

    8
  • Registro em

  • Última visita

Sobre Vulcão

Vulcão's Achievements

0

Reputação

  1. Meu caro Iceguy, fiz do jeito que você falou e deu certo, muito obrigado por sua ajuda, já estava quase ficando louco com este problema.rsrsrsrs Estou em fase de teste do sistema, aparecendo novidades comunico neste post. Mais um vez muito obrigado a você a aos membros do fórum que me ajudou, espero poder retribuir sempre que puder.
  2. Iceguy, tenho o Access instalado, adicionei como chave composta os campos id, id_campanha e cliente da tabela campanhas_participantes só que não funcionou, mesmo porque nesta tabela tenho que permitir dados duplicados, ex. cliente 69 /campanha 13 - cliente 70 / campanha 13 etc. Uma coisa que percebi quando faço a consulta unindo as duas tabelas através de left join, dá entender que as campanhas são listadas da tabelas campanhas_participantes e não das tabela Campanhas, teria como eu listar somente os registros da tabela CAMPANHAS e pegar as referencias que preciso da tabela campanhas_participantes? Ou seja uma consulta inversa! Se o meu Select ficar assim, consigo listar somente os registros da tabela Campanhas, só que perco a referências dos clientes da tabelas participantes. Ufa parece uma missão impossivel, onde estou errando? SELECT codCamp, titulo, status, inicio, termino, id_texto, id_regulamento, participar, Cliente FROM (campanhas Left JOIN campanhas_participantes ON campanhas.CodCamp =campanhas_participantes.clientes) Group By codCamp, titulo, status, inicio, termino, id_texto, id_regulamento, participar, exibir, cliente
  3. Iceguy você poderia me dar um exemplo pratico de como criar uma chave composta no access? Procurei na net exemplos e não consegui nada muito concreto, o que mais esclareu algumas duvidas foi o post que encontrei no link abaixo, mesmo assim não entendi muito bem. http://www.hardware.com.br/comunidade/elim...icacoes/788938/
  4. na verdade não é duplicacao, se um id_campanha aparece varias vezes na tabela de participantes, vai ter uma linha para cada participante nesse seu select, não tem nd de errado. exemplo, possivelmente, nesse sua tabela de participante, você não tem somente o cliente 69 para o id 13. você deve ter uma linha para o 69, outra para o 70, outra para o 71 e etc. então o seu select vai trazer as tres linhas, uma com cada codigo. ai é so você tratar do jeito como achar melhor. se você quiser pegar só o primeiro cliente, pode tentar assim: ComandoSQL = "SELECT codCamp, titulo, status, inicio, termino, id_texto, id_regulamento, exibir, id_Campanha, Min(campanhas_participantes.cliente) As cliente, participar FROM (campanhas Left JOIN campanhas_participantes ON campanhas.CodCamp =campanhas_participantes.id_campanha) Group By codCamp, titulo, status, inicio, termino, id_texto, id_regulamento, exibir, id_Campanha, participar" mas isso levando em conta q cliente seja o unico campo q vem da tabela campanhas_participantes. se tiverem mais campos e o valor deles varias, ai pode complicar o select. Caro Kurio; Desculpa pela demora em lhe dá um retorno da sua resposta a este Post, os últimos 3 dias estive envolvido em outras questão e só hoje pude voltar a pensar neste assunto, mas vamos lá. Realmente o sistema que estou criando é como você relatou; testando da forma que você indicou usando a função Min() pegando somente o menor cliente da tabela campanhas_participantes funcionou normalmente, consegui fazer toda a consulta que precisava dizendo ao meu script que se session do cliente 69 for igual cliente 69 da tabela campanhas_participantes mostra uma mensagem. Você já participa desta campanha, se for diferente Cadastre-se. Pois bem, o problema foi como você disse que poderia complica o meu Select porque existe sim vários outros clientes cadastrados na tabela campanhas_participantes, inclusive mais alguns campos que eu não precisava exibir nesta consulta, e se logo usando um outro cliente ex. cliente 70 ai a consulta omite que este cliente já tem campanhas cadastradas. E ai como eu faço neste caso uma vez que a função Min() pega somente o menor cliente e a função Max() pega só o maior cliente? Se uso a clausula WHERE cliente=69 lista somente as campanha que o cliente esta cadastrado impossibilitando que ele cadastre em outras campanha. E Iceguy, obrigado por perguntar; então respondendo, preciso lista todas as campanhas existentes na tabela Campanhas e ao mesmo tempo pegar as informações do cliente na tabela Campanha_participantes, para não permitir que ele cadastra-se mais de uma vez na mesma campanha.
  5. Meu caro boa noite, obrigado pela resposta! Fiz como você disse, para group by funcionar fui obrigado a declara todos os campos novamente como mostrado abaixo; funcionou só que a consulta continou mostrando dados duplicado. Tentei tbém sem (Where codCamp=id_campanha) o resultado foi o mesmo, e quando deixo declarado somente os dois campos como você disse dá o erro logo abaixo. Desta forma funciona mas o resultado é o mesmo: ComandoSQL = "SELECT DISTINCT codCamp, titulo, status, inicio, termino, id_texto, id_regulamento, exibir, id_Campanha, participar, cliente FROM (campanhas Left JOIN campanhas_participantes ON campanhas.CodCamp =campanhas_participantes.id_campanha) WHERE titulo=titulo GROUP BY codCamp, id_campanha, cliente, participar, titulo, status, inicio, termino, id_texto, id_regulamento, exibir " Erro quando fiz diferente: Microsoft JET Database Engine erro '80040e21' Você tentou executar uma consulta que não inclui a expressão 'codCamp' especificada como parte de uma função agregada. /consultar_campanhas.asp, linha 247
  6. Meu caro obrigado pela resposta! Então esqueci mencionar que estou usando asp classic que por tanto a consulta esta no modo designer. Mas como dito antes se eu deixo a declaração do campo Cliente, me parece algo como mostrado abaixo da forma que eu preciso, tento todas as informações como mostrado somente como referencia na coluna escrever-se. Só que se tiver mais de cliente com a mesma Campanha teste6, ai duplica a consulta! Pelo que pude ver o meu problema todo esta girando em torno da coluna cliente da tabela campanhas_participantes, que esteja cadastrado na mesma que tenha o código da campanha repetido. Se tiro o campo cliente a consulta ocorre somente na tabelas campanha não me mostrado os campos que preciso. NOME DA CAMPANHA Campanha----------------------Data Início----------------------Data Termino------------------------------Escrever-se-------------------------------------Status das Campanhas Campanha teste6 ________ 13/09/2011 ás 00:00:00 ___ 12/12/2011 ás 00:00:00 ______CodCamp (id da tabela Campanha): 13 ______ Campanha Ativa ________________________________________________________________________id_Campanha (id da Campanha tabela ________________________________________________________________________campanha_partincipantes): 13 ________________________________________________________________________ Numero cliente (tabela campanha_partincipantes) 69
  7. Bom dia pessoal! Sou novo no fórum e espero poder contribuir com todos vocês quando necessário. O motivo pelo qual estou procurando ajuda é que já faz um mês que estou quebrando a cabeça com uma consulta de SQL na junção de tabelas com LEFT JOIN/INNER JOIN para um sistema campanha publicitária on-line, já consegui todo resultado do mundo nesta consulta só não consigo o resultado que estou precisando. Eu não sei se é um limitação do Access ou limitação do SQL, só sei que a minha ultima saída é postar neste fórum que é tão conceituado pela sua sabedoria; conseqüência dos esforços de todos os seus membros . Aparentemente não há nada de errado com a minha consulta, o problema é que preciso gera alguns parâmetros que quando solicito a consulta, ou vem resultado demais ou falta resultado, segue abaixo o código. Detalhe, eu preciso de resultado distintos ComandoSQL = "SELECT DISTINCT codCamp, titulo, status, inicio, termino, id_texto, id_regulamento, exibir, id_Campanha, cliente, participar FROM (campanhas Left JOIN campanhas_participantes ON campanhas.CodCamp =campanhas_participantes.id_campanha) WHERE codCamp=id_campanha " Eu preciso captura da tabela (campanhas_participantes) o id_campanha e o cliente, até ai tudo bem consigo captura só que clausula DISTINCT não funciona, retornando valores duplicados, o seja as campanhas repetidas gravadas de todos os clientes. Se tiro a declaração (cliente) da clausula destinct ai não duplica o resultado, mas também não me dá o numero do cliente gravados na tabela campanha_participantes, gerando o erro abaixo. Como eu resolvo isto, alguém tem alguém idéia? CodCamp (id da tabela Campanha): 13 id_Campanha (id da Campanha tabela campanha_partincipantes): 13 Erro: ADODB.Recordset erro '800a0cc1' O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado. /consultar_campanhas.asp, linha 324
×
×
  • Criar Novo...