problème de jointure entre deux requette séparé

problème de jointure entre deux requette séparé - SQL/NoSQL - Programmation

Marsh Posté le 27-05-2009 à 14:52:46    

Bonjours,
depuis le début de la semaine j'esseil de faire marché ma requette correctement mais pas moyen, mon problème c'est qu'à mon affichage dans la collone customer_from il y en a qui viennent de  
1st, 1st_blabla_, 1st_blabli, 1st_etc... ce que j'avais fait c'étais un SELECT substr(customers_from, 1, 3) AS Origin, pour avoir tous les 1st en un mais le problèmes c'est que des fois on à des customers_from qui viennent de jesaispasou ou dicioulaba et on verra que les 3 premières lettres donc je voudrai pouvoir avoir toutes les lettres de ceu que j'ai pas besoin de regrouper donc j'ai mis celà: SELECT IF(customers_from LIKE '1st%','1st_',customers_from) AS Origin, pour que tous ce qui commence par 1st soient renomé 1st_ .  
Mais là j'ai un problème c'est que mon résultat me donne 83 aulieu de 100 et le premier 1st qui est écrit comme sa "1st" et me retourne le nombre de 17 et 17+83=100 je sais pa si il y a un rapport mais quand même je me pose des questions si il lit pas le premier 1st ou si c'est parce qu'il y a rien d'autre après le 1st.
La cause du problème je pense doit être du fait que c'est sur 2 boucle et deux requette  
le problème doit venir entre là :

Code :
  1. SELECT IF(customers_from LIKE '1st%','1st_',customers_from) AS Origin,


et là :

Code :
  1. and   customers_from LIKE '{$row['Origin']}%'


 
je vous montre mon bout de code

Code :
  1. // REQUETE 1 : chercher les prestataires et les regrouper par les 3 premiere lettres et compter le nombre de voyance gratuite  
  2. $query = "SELECT IF(customers_from LIKE '1st%','1st_',customers_from) AS Origin,
  3.        COUNT(*) AS effectif_vg
  4.  FROM customers
  5.  WHERE customers_from NOT LIKE '<%'
  6.  " . $condition . "
  7.  GROUP BY Origin ";
  8. $result_vg = mysql_query($query) ;
  9. while ($row = mysql_fetch_array($result_vg)) {
  10. // REQUETE 2 :  REQUETE QUI VA RECUPERER LES DONNES DE VG, NB DE COMMANDES, CA, MMC
  11.   $query_produit =
  12.     " SELECT
  13.        COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
  14.        AVG(co.commandes_montant) AS Mmc
  15.      FROM customers cu
  16.      INNER JOIN commandes co 
  17.      ON cu.customers_id=co.customers_id
  18.      WHERE  co.commandes_status='1'
  19.      and   customers_from LIKE '{$row['Origin']}%'
  20.      " . $condition . "
  21.       ";
  22. while ($row1 = mysql_fetch_array($result)) {


 
ensuite la je mets mon affichage si quelqu'un peu me renseigné sur mon erreure ce serai gentille car là je galère bien merci

Reply

Marsh Posté le 27-05-2009 à 14:52:46   

Reply

Marsh Posté le 27-05-2009 à 15:53:44    

euh une question c'est normal que avant la deuxieme boucle tu n'est pas de mysql_query pour executer query_produit, je me trompe peut etre tu l'execute peut etre plus tard, mais alors je vois pas trop d'ou vient le $result


Message édité par infoman64 le 27-05-2009 à 15:54:05
Reply

Marsh Posté le 27-05-2009 à 16:24:39    

oui désolé j'ai oublié de mettre sa dans l'exemple mais dans mon code c'est bon.

Code :
  1. $result = mysql_query($query_produit) ;
  2. while ($row1 = mysql_fetch_array($result))
  3. {


 
par contre j'ai avencé d'un pas j'ai trouvé mon erreur mais j'ai toujours un truc qui cloche  
 
mon erreure étais là: LIKE '1st%','1st_'
et la bonne formule est sa: LIKE '1st%','1st'
 
je doit réecrire correctement tous ce qu'il y a entre les %
 
Mais mon autre problème c'est qu'il n'y a pas que 1st que je veut regroupé il y a aussi thnl par exemple et là j'ai fait comme sa
 

Code :
  1. SELECT IF(customers_from LIKE '1st%','1st',customers_from) and  IF (customers_from LIKE '%thnl%','thnl',customers_from) AS Origin,


 
Connaitrait tu la bonne synthaxe??
j'ai mis or a la place du if mais toujours rien je pence que c'est ma syntaxe qui est fausse

Reply

Marsh Posté le 28-05-2009 à 08:14:38    

es-ce posible??? au moin???

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed