DISTINCT sur un seul champ, parmi plusieurs champs
Jeremyb36
-
Jeremyb36 -
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,
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)!
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)!
A voir également:
- DISTINCT sur un seul champ, parmi plusieurs champs
- Word mettre à jour tous les champs ✓ - Forum Word
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- Son dans un seul écouteur avec fil ✓ - Forum Audio
- ERREUR nom du champ du tableau croisé dynamique non valide - Forum Excel
- Comment imprimer un tableau excel sur une seule page - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, suggestion:
tel étant le nom du champ à récupérer dans la table TelephoneTiers
joinLeft(array('tet' => 'TelephoneTiers'), 't."idTiers" = tet."idTiers"', 'DISTINCT tel')
tel étant le nom du champ à récupérer dans la table TelephoneTiers
Jeremyb36
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.
Jeremyb36
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")