Bonjour,
j'extrais les infos client de ma base de données Mysql stockant des données Magento (magasin en ligne).
Voici ma requête :
Le probleme est que je voudrais obtenir des e-mails sans doublon. Ce qui est essez difficile. Certaines personnes corrigeant/changeant de nom/prenom entre 2 commandes. (Jon Smith en John Smith par example)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 "SELECT DISTINCT e.value as email, ln.value as lastname, fn.value as firstname, ct.value as country FROM sales_order o INNER JOIN sales_order_varchar e ON e.entity_id = o.entity_id AND attribute_id = ".$atEmail." INNER JOIN sales_order_entity lne ON lne.parent_id = o.entity_id AND lne.entity_type_id = ".$etID." INNER JOIN sales_order_entity_varchar ln ON ln.entity_id = lne.entity_id AND ln.attribute_id = ".$atLn." INNER JOIN sales_order_entity_varchar fn ON fn.entity_id = lne.entity_id AND fn.attribute_id = ".$atFn." INNER JOIN sales_order_entity_varchar ct ON ct.entity_id = lne.entity_id AND ct.attribute_id = ".$atCt." WHERE o.created_at AND ct.value = 'US' AND e.value != '' AND o.store_id != 15 AND o.store_id != 8 ORDER BY cs.name, ln.value";
Bref, avec cette requête, j'obtiens une liste de 66000 enregistrements. Je ne sais pas si il est possible d'éviter ce genre de doublon avec sql.
En php, je voulais les trier dans une boucle afin de de pas avoir de doublons. Mais ca prends trop de temps/de ressources serveur.
Avez-vous une meilleure méthode afin de trier les emails?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 $emailCheck = array(); do{ $foundEmail = false; for($i = 0; $i < count($emailCheck); $i++) { if($emailCheck[$i] == $row_rsA["email"]) $foundEmail = true; } if(!$foundEmail) { echo $row_rsA["lastname"].",".$row_rsA["firstname"].",".$row_rsA["email"]."\n"; array_push($emailCheck, $row_rsA["email"]); } }while($row_rsA = mysql_fetch_assoc($rsA));
Merci
Partager