Jump to content

Requêtes SQL doublons


Recommended Posts

Bonjour,

 

je suis en train de modifier un module de formulaire pour récupérer les coordonnées des personnes n'ayant pas répondu à mes formulaires.

L'idée c'est de récupérer, dans la table 'customer', les personnes qui sont absentes de la table 'submission' du formulaire portant l'id $id et qui font parti du groupe qui reçoit les formulaires.

J'ai fait la requête suivante :

$sql2 = 'SELECT *
         FROM `'._DB_PREFIX_.'customer` AS a
         INNER JOIN `'._DB_PREFIX_.'ukooformpro_submission` AS b
         ON b.`id_customer` != a.`id_customer`
         WHERE b.`id_ukooformpro_form` = '.(int)$id.' AND a.`id_default_group` = '.(int)4;
$coordonnees2 = Db::getInstance()->ExecuteS($sql2);

Ensuite j'ai un foreach qui affiche mes résultats :

foreach ($coordonnees2 as $key) {
      echo "<tr>";
      echo "<td style='border:1px solid #ccc; padding: 10px'>".$key['email']."</td>";
      echo "</tr>";
    }

Ça fonctionne sauf qu'il m'affiche les personnes qui n'ont pas répondu en double et les personnes qui ont répondu une seule fois. Il faudrait qu'il m'affiche une seule fois les personne qui n'ont pas répondu...

 

Quelqu'un aurait une idée SVP ?!

 

Merci beaucoup !

Link to comment
Share on other sites

Bonjour,

 

Pour faire simple, essaies ceci :

$sql2 = 'SELECT *
         FROM `'._DB_PREFIX_.'customer` AS a
         WHERE a.`id_default_group` = 4 
         AND a.`id_customer` NOT IN (
             SELECT b.`id_customer` FROM `'._DB_PREFIX_.'ukooformpro_submission` AS b
         )';
$coordonnees2 = Db::getInstance()->ExecuteS($sql2);
Link to comment
Share on other sites

Bonjour Deithso,

 

Merci pour ta réponse !

On viens de m'aider sur un autre forum, je pensais avoir donner la solution et passer le sujet en résolu.

 

Voici la requête qui fonctionne :

$sql2 = 'SELECT `email`, `firstname`, `lastname` 
        FROM `'._DB_PREFIX_.'customer` 
        WHERE `id_customer` NOT IN 
              (SELECT c.`id_customer` 
               FROM `'._DB_PREFIX_.'customer` AS c 
               NATURAL JOIN `'._DB_PREFIX_.'ukooformpro_submission` AS s 
               WHERE s.`id_ukooformpro_form` = '.(int)$id.');
$coordonnees2 = Db::getInstance()->ExecuteS($sql2);

Voilà :)

 

Merci en tout cas !

Link to comment
Share on other sites

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...