sltpaulo | Euréka, il faut croire que j'ai été touché par la grace divine ce matin, j'ai trouvé, pas besoin de vous tracasser pour moi je vous mets la solution :
Code :
- select SQL_CALC_FOUND_ROWS
- *
- from
- (select
- d.dt_name as st,
- round(sum(CASE
- WHEN
- (TO_DAYS('2013-03-07') - TO_DAYS(r.rc_date_due)) > - 5000000
- AND (TO_DAYS('2013-03-07') - TO_DAYS(r.rc_date_due)) < 1
- THEN
- fr_amount / 100
- ELSE 0
- END), 4) AS 'NYD',
- round(sum(CASE
- WHEN
- (TO_DAYS('2013-03-07') - TO_DAYS(r.rc_date_due)) > - 5000000
- AND (TO_DAYS('2013-03-07') - TO_DAYS(r.rc_date_due)) < 1
- THEN
- fr_amount / 100
- ELSE 0
- END), 4) AS 'Amount'
- from
- missions m
- join debtors d ON mi_id = dt_mi_id
- join topics t ON dt_id = tp_dt_id
- join receivables r ON tp_id = rc_tp_id
- join fractions f ON rc_id = fr_rc_id
- left join client_segments s ON mi_cl_id = cls_cl_id
- and dt_cls_id = cls_id
- left outer join client_delays dl ON dl.cld_id = r.rc_cld_id
- and dl.cld_cl_id = 85
- where
- mi_id in (205)
- and fr_status in ('NS' , 'IQ', 'IM', 'VA', 'GO', 'EN', 'P1', 'PA', 'CL')
- and cls_id in (2 , 3, 4, 5)
- and rc_in_scope = 'Y'
- and (cld_id in (1 , 2, 11, 4, 5, 15, 16, 7, 12, 13, 14, 20, 8, 19, 9, 17, 18, 10, 0)
- or cld_id is null)
- and tp_us_id in (223 , 224, 229, 222, 230, 226, 225, 227, 231, 228, 211, 214, 215, 213, 218, 217, 219, 216, 293, 295, 210, 294, 220, 241, 212, 221)
- and cls_cl_id = 85
- and (((TO_DAYS('2013-03-07') - TO_DAYS(r.rc_date_due)) > - 5000000
- AND (TO_DAYS('2013-03-07') - TO_DAYS(r.rc_date_due)) < 1))
- and m.mi_date_ended is null
- group by st
- order by st asc
- ) as t
- where
- (st LIKE '%12342.00%'
- OR NYD LIKE '%12342.00%'
- OR Amount LIKE '%12342.00%')
- limit 0 , 10
|
Juste attention, le limit doit être à l'extérieur sinon vous ne sélectionner que les colonnes de la première requête, ensuite le SQL_CALC_FOUND_ROWS
pour la fonction FOUND_ROWS() de sql ne peut être que dans la requête de sortie => erreur sinon, également, ne pas oublier de faire un alias sur la sortie de la requete imbriquée. Un soucis à cette méthode est qu'il est obligatoire d'utiliser le nom des colonnes de sortie de la requête imbriqué (exemple j'ai écris d.dt_name as st, je dois donc utiliser 'st' et non d.dt_name qui n'est plus défini, par contre si j'écris d.dt_name sans alias, je peux le réutiliser).
J'ai vu pas mal de post sur le net sans réponses, j'espère que je pourrai aider certaines personnes qui ont le même problème.
Cordialement, Paul
Edit : Merci rufo, mais le having ne fonctionnait pas dans mon cas Message édité par sltpaulo le 07-03-2013 à 10:51:36
|