Jump to content

Relação duas Tabelas


ruitalia

Recommended Posts

Boas pessoal.

Cá estou eu com mais duvida nas minhas brincadeiras:

Tenho duas tabelas:

precos_gasoleo
id, valor(€), inicio (data)

Abastecimentos
id, data, litros

Tabela Abastecimentos:

Registos de abastecimentos com info de data e quantidade

Tabela Preços Gasóleo:

Registos das alterações do PMVP do Gasóleo

O que queria era saber o valor (€) de uma query de Abastecimentos (Lts) entre a data X e Y, sabendo que os preços por litro estão na tabela precos_gasoleo.

Uma vez que tenho de relacionar as tabelas de modo a multiplicar o preço por litro pela quantidade abastecida, não estou a chegar lá...

Alguma sugestão?

Obrigado!

Azores

Link to comment
Share on other sites

Creio que não tens nenhuma chave dos abastecimentos para o preço, ou seja os campos id que tens ai são as chaves primárias das tabelas.

Se assim for:

1 - A query do bruno1234 não serve porque está assumir que as tabelas se relacionam pelo campo id, o que não é verdade.

2 - Sem mudares o modelo terás de fazer o seguinte: primeiro filtras pelas datas X e Y, do resultado obtido tens, por cada abastecimento, de encontrar o intervalo de datas entre alteração de preço para cada um dos abastecimentos, depois multiplicas os litros pelo preço do combustível para todos os abastecimentos entre essas datas.

Uma solução obviamente mais simples e eficiente (a abordagem que o bruno1234 tentou fazer) é ter uma chave estrangeira nos abastecimentos que indique qual o preço do gasóleo. Com essa chave, a query é extremamente simples:

select pg.valor * a.litros as TOTAL

from precos_gasoleo pg,

abastecimentos a

where

a.fk_precos_gasoleo_id = pg.id

and a.data between (DATA_X, DATA_Y)

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Exacto, nem me tinha apercebido disso.

Para a minha query funcionar as tabelas teriam q ficar:

precos_gasoleo

id, valor(€), inicio (DATA)

Abastecimentos

id, fk_id, DATA, litros

em q o id dos preços de gasoleo relaciona com o fk_id dos abastecimentos.

Depois na query é alterar:

ON t1.id = t2.id

por

ON t1.fk_id = t2.id

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

bruno1234, o M6 tem razão. O ID de cada tabela não estão relacionados, são apenas os indices de cada tabela.

A solução que o M6 apresentou foi a que acabei por utilizar e já está a bombar.

Para cada abastecimento tive de ir buscar o preço entrado em vigor imediatamente anterior (pela data) e multiplicá-lo pelos litros.

Obrigado! 👍

Azores

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.