Kytrix  | bonjour  
   voila j'ai un problème que je retourne dans tous les sens depuis quelques temps déja et je ne parviens pas a trouver de solution optimale (entendre rapide)
   j'ai 2 table, une avec bcp d'enregistrements d'appels téléphonique(unixTime d'appel, numéro appelé, oppérateur utilisé)
 l'autre avec une grille de prix(unixTime de validité du prix, code pays, opperateur,prix)
   ce que je cherche c'est a récupérer pour chaque appel le prix qu'il a couté
 , en fonction de quand, par quel oppérateur et vers quelle destination.
   assez de blabla, voici ou j'en suis arrivé:  
  Citation :
 
  SELECT CDR.UnixTime, CDR.DestNum, CDR.ReselerID, (SELECT RateTable.Price
           FROM RateTable
           WHERE RateTable.AreaCode = LEFT(CDR.DestNum,LENGTH(RateTable.AreaCode))
                 AND RateTable.ReselerID = CDR.ReselerID
                 AND RateTable.EffectUT < CDR.UnixTime
           ORDER BY RateTable.EffectDate DESC, RateTable.AreaCode DESC
           LIMIT 0,1) as 'Price'
 FROM (SELECT DestNum, UnixTime, ReselerID FROM IPNX_CDR LIMIT 0,100) CDR
 ORDER BY CDR.DestNum;
   |  
 
   le problème est que c'est relativement lent car pour chaque ligne de la table CDR, il génère une sous requette.
   j'ai essayé de passer par un JOIN, mais il n'accepte pas la référence a la colone a l'exterieur de la requette (a l'inverse du cas précédant)
  Citation :
 
 SELECT IPNX_CDR.UnixTime, IPNX_CDR.DestNum, IPNX_CDR.ReselerID, RT1.AreaCode, RT1.Price
 FROM IPNX_CDR
         ,(SELECT AreaCode, ReselerID, EffectUT
           FROM RateTable
           WHERE AreaCode = LEFT(IPNX_CDR.DestNum,LENGTH(AreaCode))
                 AND ReselerID = IPNX_CDR.ReselerID
                 AND EffectUT < IPNX_CDR.UnixTime
           ORDER BY EffectDate DESC, AreaCode DESC
           LIMIT 0,1) as RT1
 ORDER BY IPNX_CDR.DestNum;
 LIMIT 0,100;
   |  
 
   donc j'ai un cas qui fonctionne mais qui est lent (si je rajoute 1 champ ça m'oblige a rajouter une sous requette)
 et l'autre qui ne fonctionne pas.
   j'espère profiter de vos conseils  
 merci.
   voir mon 3eme msg pour les tables.    Message édité par Kytrix le 02-09-2005 à 10:18:41
  |