Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pensa

Como fazer uma pesquisa em duas tabelas?

Recommended Posts

Olá!!!Não obtive respostas no fórum de Access, talvez aqui seja o melhor lugar para publicar essa pergunta...Seguinte... teho uma tabela de eventos e uma outra de datas de eventos.. a relação é a seguinte:TAB_EVENTOS- ID- titulo- descricaoTAB_DATAS- ID- ID_evento (chave secundária que liga à tabela TAB_EVENTOS)- dataQuero fazer uma query SQL que pegue todos os camos de EVENTOS e filtre para mostrar apenas os eventos com data que ainda vai acontecer (exclua os eventos antigos que já passaram).Estou fazendo assim:SELECT TAB_EVENTOS.*, TAB_DATAS.* from TAB_EVENTOS inner join TAB_DATAS on TAB_DATAS.ID_evento=TAB_EVENTOS.ID where data>=#"&year(now())&"-"&month(now())&"-"&day(now())&"# order by data ascNão tem nada de errado com a query, só que tem um probleminha... a tabela de datas é separada da de eventos justamente por que um evento pode ter vários dias (1 dia, 2, 3, uma semana, um mês, etc) e o problema é que a query retorna o mesmo evento várias vezes (dependendo de quantos dias tem o evento) se o evento cadastrado tem 5 dias na tabela de datas a query retorna o mesmo evento 5 vezes... o que fazer?Alguém tem idéia?Valeus! Renan

Compartilhar este post


Link para o post
Compartilhar em outros sites

data é um campo apenas??qual o tipo??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque isso

SELECT TAB_EVENTOS.*, TAB_DATAS.* from TAB_EVENTOS inner join TAB_DATAS on TAB_DATAS.ID_evento=TAB_EVENTOS.ID where data>=#"&year(now())&"-"&month(now())&"-"&day(now())&"# order by data asc

Por isso

SELECT Distinct          TAB_EVENTOS.*,           TAB_DATAS.* from           TAB_EVENTOS                           inner join TAB_DATAS on                         TAB_DATAS.ID_evento=TAB_EVENTOS.ID and                         data>=#"&year(now())&"-"&month(now())&"-"&day(now())&"# order by            data asc

Perceba que eu coloquei a cláusula "Distinct" no começo do código e retirei da cláusula where a pesquisa da data, incluindo ela no relacionamento do JOIN.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ummm.. percebi o qu você fez... faz sentido.. mas ta dando um erro:

Microsoft JET Database Engine error '80040e14'

Join expression not supported.

 

Sabe o que pode ser?

 

 

Troque isso

SELECT TAB_EVENTOS.*, TAB_DATAS.* from TAB_EVENTOS inner join TAB_DATAS on TAB_DATAS.ID_evento=TAB_EVENTOS.ID where data>=#"&year(now())&"-"&month(now())&"-"&day(now())&"# order by data asc
Por isso

SELECT Distinct          TAB_EVENTOS.*,           TAB_DATAS.* from           TAB_EVENTOS                           inner join TAB_DATAS on                         TAB_DATAS.ID_evento=TAB_EVENTOS.ID and                         data>=#"&year(now())&"-"&month(now())&"-"&day(now())&"# order by            data asc
Perceba que eu coloquei a cláusula "Distinct" no começo do código e retirei da cláusula where a pesquisa da data, incluindo ela no relacionamento do JOIN.

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o erro, era só colocar as instruções do ON entre parentesis.. só que a query continua "duplicando" os registros... os eventos com dois dias aparecem duas vezes... vou dar uma pesquisada sobre distinct... se souber de algo me avise por favor... Valeu!!!

 

 

Seu banco é access ?

Mostra como fica a instrução depois que você coloca as variaveis,

Tipo

Response.Write SqlResponse.end

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara coloca na Instrução só o que você vai precisar e não "*"

Faz Assim:

 

Select Distinct TAB_EVENTOS.ID,TAB_EVENTO.titulo,TAB_EVENTO.descricaoFROM ......

Se você fizer desse jeito e não funcionar eu me aposento.

(Que Perigo......Rs..Rs..)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.