我遇到了一个 mySQL 查询的问题。
我想credit_memo
从表中返回每个最后的汇率交换HISTORIQUE_DEVISE
。
我的HISTORIQUE_DEVISE
表记录如下:
ID | account_id| code_source | code_destination | date | taux | ..
242 | 12 | 1 | 133 | 2013-02-22 | 0.82000 | ..
243 | 12 | 1 | 133 | 2013-03-26 | 0.96000 | ..
244 | 12 | 1 | 133 | 2013-03-26 | 1.29000 | ..
目前,我的最后一个左连接返回 3 行(如果credit_memo.date
等于2013-03-26
和rate.taux
SELECT 中的返回0.82000
。如何转换查询以获得1.29000
左连接的最后一个值?因为我只想要最后一条记录 #244。是可以避免左连接内的子查询吗?
谢谢你们的帮助!
SELECT credit_memo.code_avoir_client,
credit_memo.total_ttc,
credit_memo.date,
credit_memo.code_utilisateur,
credit_memo.montant_restant_a_payer,
DEVISE.code_iso,
PAIEMENT_FACTURE_FOURNISSEUR.date_reglement,
customer.code_client,
customer.code_utilisateur_client,
customer.prenom,
customer.raison_social,
lead.code_client,
lead.code_utilisateur_client,
lead.prenom,
lead.raison_social,
project.project_code,
project.name,
rate.taux
FROM AVOIR_CLIENT AS credit_memo
LEFT JOIN CLIENT AS customer
ON customer.code_client = credit_memo.code_client
AND customer.code_profil_client = 1
AND ( customer.account_id = 0
OR customer.account_id = 12 )
AND customer.etat = 0
LEFT JOIN CLIENT AS lead
ON lead.code_client = credit_memo.code_client
AND lead.code_profil_client = 2
AND ( lead.account_id = 0
OR lead.account_id = 12 )
AND lead.etat = 0
LEFT JOIN PROJECT AS project
ON project.project_code = credit_memo.project_code
AND ( project.account_id = 0
OR project.account_id = 12 )
AND project.etat = 0
LEFT JOIN DEVISE
ON DEVISE.code_devise = credit_memo.code_devise
AND ( DEVISE.account_id = 0
OR DEVISE.account_id = 12 )
AND DEVISE.etat = 0
LEFT JOIN PAIEMENT_FACTURE_FOURNISSEUR
ON PAIEMENT_FACTURE_FOURNISSEUR.code_avoir_client =
credit_memo.code_avoir_client
AND ( PAIEMENT_FACTURE_FOURNISSEUR.account_id = 0
OR PAIEMENT_FACTURE_FOURNISSEUR.account_id = 12 )
AND PAIEMENT_FACTURE_FOURNISSEUR.etat = 0
LEFT JOIN ETABLISSEMENT AS eta
ON eta.code_etablissement =
credit_memo.code_etablissement
AND ( eta.account_id = 0
OR eta.account_id = 12 )
LEFT JOIN HISTORIQUE_DEVISE AS rate
ON rate.code_etablissement =
credit_memo.code_etablissement
AND rate.CODE_DEVISE_SOURCE = credit_memo.CODE_DEVISE
AND rate.CODE_DEVISE_DESTINATION = eta.CODE_DEVISE
AND rate.date <= credit_memo.date
AND ( rate.account_id = 0
OR rate.account_id = 12 )
AND rate.etat = 0
WHERE ( credit_memo.account_id = 0
OR credit_memo.account_id = 12 )
AND credit_memo.etat = 0
GROUP BY credit_memo.code_avoir_client ;