Jump to content

[résolu]requête sql sur 2 tables


hulk

Recommended Posts

Bonjour
Je suis entrain de construire un module personnalisé pour l'exportation des @ mails des client enregistrés et celles de module newsletter.
je voudrais exporter les adresses mails de 2 tables suivantes "ps_customer" et "ps_newsletter" et les exporter en un fichier csv tout en éliminant les doublons.J'arrive a exporter les adresses d'une seule table mais lorsque j'essaye d'exporter de 2 tables avec cette requête

$sql="SELECT DISTINCT n.email,
                                 c.email
           FROM "._DB_PREFIX_."newsletter n, "._DB_PREFIX_."customer c
           ";



il me renvoi 2 adresses seulement répétées n fois.Je ne sait pas comment les joindre ensemble dans la requête sql.
Je suis novice en php et mysql
Merci

Link to comment
Share on other sites

Bonjour,

il y a peut ête plus simple mais voici ce que tu veux :

selection des emails des clients ayant souscrit à la newsletter et des emails des non-clients ayant souscrit à la newsletter (sans doublon)

SELECT DISTINCT(email)
FROM ps_customer 
WHERE newsletter = 1 
AND email NOT IN (SELECT DISTINCT(email) FROM ps_newsletter)
UNION
SELECT DISTINCT(email)
FROM ps_newsletter
ORDER BY email ASC

Link to comment
Share on other sites

voici le bout de code:

$sql="SELECT DISTINCT(email)
                      FROM ps_customer 
                      WHERE newsletter = 1 
                      AND email NOT IN (SELECT DISTINCT(email) FROM ps_newsletter)
                      UNION
                      SELECT DISTINCT(email)
                      FROM ps_newsletter
                      ORDER BY email ASC
           ";

           $orderlist = Db::getInstance()->ExecuteS($sql);

           $file = fopen(dirname(__FILE__).'/mails.csv', 'w');
           $firstline = "Adresses Email";
           fwrite($file, $firstline."\r\n");
           foreach($orderlist AS $orderline){
               fwrite($file, implode(';', $orderline)."\r\n");
           }
           fclose($file);}
                      else
       {
       $this->_html .= '<form method="post"><input type="submit" name="download" value="'.$this->l('Exporter le fichier en CSV').'" />         </form>';
           return $this->_html;
       }

Link to comment
Share on other sites

Bizarre, je ne vois pas dans ce code d'où pourrait venir la ligne vide à la fin.
Fait un print_r($orderlist) pour vérifier si c'est la requete sql qui sort une ligne vide.
Si c'est le cas, tu peux ajouter un WHERE email !='' à la requete SQL
Ou alors tester dans ton for each si $orderline est différent de chaine vide.

Link to comment
Share on other sites

oui je parle de cette ligne

 fwrite($file, implode(';', $orderline)."\r\n");


j'ai enlevé le "\r\n" et toutes les adresses son écrite dans la même ligne (la 2 ligne ), il faut la conserver pour le retour chariot
En tout cas c pas grave pour moi, je la laisse comme elle est
Merci Juliens

Link to comment
Share on other sites

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...