• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kadinho

Ajuda - ligar 2 tabelas

14 mensagens neste tópico

Ora bem pessoal, preciso da ajuda dos cranios da programação. :hmm:

É assim tenho 1 tabela de artigos (codigo,designação, EAN, UV etc...) e tenho uma tabela de promoções (codigo, data de inicio, data fim, preço e pouco mais) e quero fazer uma consulta em que essa consulta me vai retornar uma lista de artigos e mostra o preço promocional do artigo se a data em que a consulta é feita estiver entre a data de inicio e data de fim. Como faço isso ?

Já agora isso é para usar num report feito em Crystal Reports XI.

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT *
FROM artigo a, promocoes p
WHERE p.datainicio> 'data de inicio' AND p.datafim<'data de fim' AND p.codigo=a.codigo

Suponho que faças isto em SQL...

Acho que é qualquer coisa desse género (segundo tu especificas-te).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

estou a construir um report em Crystal Reports XI e uso SQL mas as bases de dados são ORACLE.

Essa query é interessante mas e o link das tabelas ?

Obrigado desde já pela ajuda  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falta aí um INNER JOIN

SELECT <colunas_a_ver>
FROM <tabela1> INNER JOIN 
<tabela2> AS <tabela1>.<coluna_código> = <tabela2>.<coluna_código>
WHERE <condições>;

Só falta substituir os <> pelas colunas, tabelas e condições correctas :(

SQL é lindo :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É isso, mas assim só vou ter os artigos que são iguais nas 2 tabelas e vai-me retornar só os que estão em promo.

Quero todos os artigos da tabela 1 (artigos) e ver o campo do preço da tabela das promoções se o artigos estiver em promo.

Não sei se me estou a explicar bem...

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deves usar o LEFT OUTER JOIN

Oracle 9i

SELECT <colunas_a_ver>
FROM <tabela1> LEFT OUTER JOIN <tabela2>
ON <tabela1>.<coluna_código>= <tabela2>.<coluna_código>
WHERE <condições>;

Oracle 8i

SELECT <colunas_a_ver>
FROM <tabela1>, <tabela2>
WHERE <tabela1>.<coluna_código>= <tabela2>.<coluna_código> (+) AND
      <condições>;

Para o 10G e 11G a sintaxe é igaul a do 9i

Só falta substituir os <> pelas colunas, tabelas e condições correctas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oracle 8i

SELECT <colunas_a_ver>
FROM <tabela1>, <tabela2>
WHERE <tabela1>.<coluna_código>= <tabela2>.<coluna_código> (+) AND
      <condições>;

Estou a seguir por este caminho, obrigado desde já. No entanto estou a ter duplicados pois a tabela 2 (promoções dos artigos) tem varias promoções para o mesmo artigo onde o que vale é a data de inicio e de fim da promo. Precisava de mais ajuda por favor

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Colocas essas condições no WHERE

SELECT <colunas_a_ver>
FROM <tabela1>, <tabela2>
WHERE <tabela1>.<coluna_código>= <tabela2>.<coluna_código> (+) AND
             <tabela2.><coluna_data> >= <dataincio> AND
             <tabela2>.<coluna_data> <= <datafim> AND
            <condições>;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é ao contrario a <dataincio> e a <datafim> estão na tabela 2 e a data em questão é a data em se tira a consulta.

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT <colunas_a_ver>
FROM <tabela1>, <tabela2>
WHERE <tabela1>.<coluna_código>= <tabela2>.<coluna_código> (+) AND
             <tabela2.><data_ini> <= 'data_actual' (+) AND
             <tabela2>.<data_fim> >= 'data_actual' (+) AND
            <condições>;

Assim já consegui.... agora vem a pior parte em que tenho de criar um report com isto em CR XI  :S

Não tenho a opção full outer join activa  :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois... se calhar tenho de pedir desculpa por estar desenquadrado da secção ou do forum talvez.... no entanto se alguem puder ajudar.  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tens que pedir desculpa, nem estás desenquadrado. Podes é ter dificuldade em obter ajuda.

Pode ser que apareça alguém que saiba.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora