Jump to content

problema SQL[RESOLVIDO]


fil79
 Share

Recommended Posts

Boas

Tenho aqui o seguinte sql com um join de duas tabelas (apolice e recibos), uma apólice pode ter vários recibos...o que queria era calcular as apólices que em que o último recibo tenha a data de fim com mais de 340 dias e não estou a conseguir fazer só com uma query:


SELECT recibo.data_fim as fim,apolice.numero,apolice.apolice_id

   FROM apolice

   left join recibo 

   on(recibo.apolice=apolice.apolice_id)

   WHERE   DATEDIFF(CURDATE(),recibo.data_fim)>340

   Group by apolice.apolice_id

   ORDER BY recibo.data_fim desc

O group by apoilice_id faz com que vá buscar o recibo mais antigo, o que queria é que o join fosse feito só com o recibo mais recente...como posso fazer isso

Desde já agradeço

MCITP-MCTS-MCP

Link to comment
Share on other sites

para a query:

SELECT recibo.data_fim AS fim, apolice.numero, apolice.apolice_id

FROM apolice

LEFT JOIN recibo ON ( recibo.apolice = apolice.apolice_id )

WHERE DATEDIFF( d, CURDATE( ) , recibo.data_fim ) >340

GROUP BY apolice.apolice_id

ORDER BY recibo.data_fim DESC

LIMIT 0 , 30

o erro mantêm-se

Obrigado pela disponibilidade

MCITP-MCTS-MCP

Link to comment
Share on other sites

AHHHH Pois .... eu estava a fazer para sqlserver.... mas acho que já descobri o teu erro. tenta trocar a posição das datas


SELECT recibo.data_fim as fim,apolice.numero,apolice.apolice_id

   FROM apolice

   left join recibo

   on(recibo.apolice=apolice.apolice_id)

   WHERE   DATEDIFF(recibo.data_fim,CURDATE())>340

   Group by apolice.apolice_id

   ORDER BY recibo.data_fim desc

já agora se não der ve esta pagina:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

SELECT something FROM tbl_name
WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

assim parece ser melhor

Link to comment
Share on other sites

estou a usar este Sql e já não dá erro:

SELECT recibo.data_fim AS fim, apolice.numero, apolice.apolice_id

FROM apolice

LEFT JOIN recibo ON ( recibo.apolice = apolice.apolice_id )

WHERE DATE_SUB( CURDATE( ) , INTERVAL 340

DAY ) > recibo.data_fim

GROUP BY apolice.apolice_id

ORDER BY recibo.data_fim DESC

LIMIT 0 , 30

mas não tenho a certeza se está  afazer exactamente o que pretendo, não estou a perceber bem o que está  a fazer

MCITP-MCTS-MCP

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
 Share

×
×
  • 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.