Sponsor Posted October 19, 2012 at 11:03 AM Report #479723 Posted October 19, 2012 at 11:03 AM 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!
HappyHippyHippo Posted October 19, 2012 at 11:28 AM Report #479727 Posted October 19, 2012 at 11:28 AM (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 October 19, 2012 at 12:08 PM by HappyHippyHippo 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Sponsor Posted October 19, 2012 at 11:40 AM Author Report #479729 Posted October 19, 2012 at 11:40 AM Viva HappyHippyHippo, Agradecio pela ajuda. E eu agora digo, como não me fui lembrar do GROUP BY :S:S Obrigado!
Sponsor Posted October 25, 2012 at 03:12 PM Author Report #480424 Posted October 25, 2012 at 03:12 PM 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
HappyHippyHippo Posted October 25, 2012 at 04:02 PM Report #480435 Posted October 25, 2012 at 04:02 PM se é para ter todos podes usar o asterisco : * IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Sponsor Posted October 25, 2012 at 08:10 PM Author Report #480471 Posted October 25, 2012 at 08:10 PM se é para ter todos podes usar o asterisco : * Não me expliquei bem! Tive que por o campo1 e campo2 mas no GROUP BY, sem isto a query não funciona correctamente!!!
HappyHippyHippo Posted October 26, 2012 at 02:57 AM Report #480500 Posted October 26, 2012 at 02:57 AM mas afinal queres um registo por cada entrada da tabela 1 ou n registos por cada entrada na tabela 2 que relacione com a tabela 1 ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now