DISTINCT sur un seul champ, parmi plusieurs champs [Fermé]

Signaler
-
 Jeremyb36 -
Bonjour,

Je vous sollicite, j'ai un souci concernant la méthode DISTINCT. J'ai une requête SQL sous forme d'un framework PHP (Zend). Je résume ma table,

public function getByDemande($idDemande, $typeTiers) {

$select = $this -> newSelect(true);
$select -> from(array('d' => 'Demande'));
$select -> join(array('s' => 'Suivi'), 'd."idDemande" = s."idDemande"');
$select -> join(array('t' => $typeTiers),'d."idContact" = t."idTiers"');
$select -> joinLeft(array('tet' => 'TelephoneTiers'), 't."idTiers" = tet."idTiers"');
$select -> joinLeft(array('mt' => 'MailTiers'), 't."idTiers" = mt."idTiers"');
$select -> join(array('at' => 'AdresseTiers'), 't."idTiers" = at."idTiers"');
$select -> where('d."idDemande" = s."idDemande"', $idDemande);
$select -> where('d.actif is true');
$select -> order('s.dateHeure DESC');

//$resultat = $select->__toString();
//echo "$resultat\n";

return $this->fetchAll($select);
}


Dans la forme, chaque idTiers peut posséder plusieurs mails (MailTiers) et plusieurs numéros téléphones(TelephoneTiers). Seulement en l'état actuel, cela me sort en résultat plusieurs lignes avec plusieurs mêmes numéros téléphones pour le même idTiers.

Ce que je recherche, c'est de faire en sorte que chaque numero de téléphone d'un idTiers soit unique, avec d'autres numéros de téléphone différents (exemple, une ligne d'un numéro de téléphone fixe, une ligne d'un numéro de téléphone portable, et une ligne d'un numéro de fax). Et je veux pouvoir mettre un DISTINCT sur la table TelephoneTiers.

Pour le moment, je n'ai pas mis de DISTINCT, afin que vous puissez visualiser la requête.

Merci d'avance pour votre/vos aide(s)!

1 réponse

Messages postés
11710
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 août 2020
670
bonjour, suggestion:
joinLeft(array('tet' => 'TelephoneTiers'), 't."idTiers" = tet."idTiers"', 'DISTINCT tel')

tel étant le nom du champ à récupérer dans la table TelephoneTiers
Ah, merci encore, je n'y avais pas pensé a ce genre de syntaxe. Je m'en vais tester ça et je vous redis après.
Bon malheureusement, après test, cela ne fonctionne, car en bug d'erreur cela indique que la colonne tet.DISTINCT idTelephone n'existe pas (idTelephone étant le nom de champ indiqué sur pgAdmin de la table TelephoneTiers dont j'ai fait l'alias " tet")