Jump to content

[Resolvido] Select numa tabela mas as condiçoes noutra


Recommended Posts

Posted

Bom dia,

Tendo as tabelas tabela1 e tabela2 sendo que:

Tabela1

TipoDoc

NumDoc

ValorPagar

ValorPago

Data

Tabela2

TipoDoc

NumDoc

idUtilizador

Valor

O que relaciona as duas tabelas é o TipoDoc e o NumDoc!

Uma única linha na tabela1 pode "conter" varias linhas da tabela2, exemplo:

Tabela1

1 2134 50,00 50,00 2012-10-19

Tabela2

1 2134 21 25,00

1 2134 21 25,00

Qual a melhor forma de fazer uma query para selecionar as linhas da tabela1 de um determinado periodo de tempo e selecionar apenas aquelas que na tabela2 digam respeito a um determinado utilizador?!

Já tentei com o INNER JOIN, LEFT JOIN, RIGHT JOIN...

Obrigado pela ajuda!

Posted (edited)
select `tabela1`.*
 from `tabela1`,
      (select `TipoDoc`, `NumDoc`, `idUtilizador` from `tabela2` group by `TipoDoc`, `NumDoc`, `idUtilizador`) as aux_tbl
where `tabela1`.`TipoDoc` = aux_tbl.`TipoDoc`
  and `tabela1`.`NumDic` = aux_tbl.`TipoDoc`
  and `aux_tbl`.`idUtilizador` = '1234'
  and `tabela1`.`data` >= '2012-01-01'
  and `tabela1`.`data` <= '2012-12-31'

ps : tinha-me esquecido dos acentos graves (tem aparecido bastantes problemas no forúm pelo uso de palavras reservadas)

Edited by HappyHippyHippo
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Posted

Viva HappyHippyHippo,

select `tabela1`.*
 from `tabela1`,
   (select `TipoDoc`, `NumDoc`, `idUtilizador` from `tabela2` group by `TipoDoc`, `NumDoc`, `idUtilizador`) as aux_tbl
where `tabela1`.`TipoDoc` = aux_tbl.`TipoDoc`
  and `tabela1`.`NumDic` = aux_tbl.`TipoDoc`
  and `aux_tbl`.`idUtilizador` = '1234'
  and `tabela1`.`data` >= '2012-01-01'
  and `tabela1`.`data` <= '2012-12-31'

ps : tinha-me esquecido dos acentos graves (tem aparecido bastantes problemas no forúm pelo uso de palavras reservadas)

Tive que alterar um pouco a query para poder selecionar na mesma dados da tabela 2. Fiz o seguinte:

SELECT `tabela1`.*, `aux_tbl`.`campo1`, `aux_tbl`.`campo2`
FROM `tabela1`,
	 (SELECT `TipoDoc`, `NumDoc`, `idUtilizador`, `campo1`, `campo2` FROM `tabela2` GROUP BY `TipoDoc`, `NumDoc`, `idUtilizador`, `campo1`, `campo2`) AS aux_tbl
WHERE `tabela1`.`TipoDoc` = aux_tbl.`TipoDoc`
AND `tabela1`.`NumDic` = aux_tbl.`TipoDoc`
AND `aux_tbl`.`idUtilizador` = '1234'
AND `tabela1`.`data` >= '2012-01-01'
AND `tabela1`.`data` <= '2012-12-31'

Tive que por o campo1 e campo2 para a query apanhar mesmo todos os registos! Era suposto ter que fazer isso?!

Cumprimentos

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.