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 行を返します ( SELECTのcredit_memo.date
equals2013-03-26
と がを返す場合。クエリを変換して、左結合の最後の値を取得するにはどうすればよいですか?最後のレコード #244 のみが必要なためです。左結合内のサブクエリを回避することは可能ですか?rate.taux
0.82000
1.29000
助けてくれてありがとう!
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 ;