Affichage de doublons dans une recherche sur deux tables [Résolu]

Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
- - Dernière réponse : rafou77
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
- 16 sept. 2004 à 18:00
Bonjour,
c'est encore moi le newbizzz

Voilà mon probleme, je fais une recherche sur deux tables (credits (id,nom,prenom,ect..) ) et (credits5 ( id,id_clt, montant,duree,ect..) ) ... dans la table clients, id à les meme valeurs que id_clt dans la table clients5 , ceci s'affiche dans un tableau, le prob c'est qu'il m'affiche les champs des deux tables mais ceux ci ne sont pas en relation, en plus il m'affiche plusieurs fois les champs car dans la table clients5 le champ id à des valeurs qui fait des doublons dans le champ id_clt, ceci est normal, je dois garder ces doublons et je ne peu pas changer le nom des champs dans les deux tables sinon je dois refaire tout le site...

Donc

table clients

Champ
id
nom
prenom
adresse
ville
code_postal
localite
pays

tables clients5

id
id_clt
montant_credit
duree
mensualite

ma source :

if ($action == "send")
{
$req = mysql_query("select * from clients2,clients5 where $type like "%$keyword%"");


if (mysql_num_rows($req)==0)
{
echo("<tr bgcolor="#ffffff"><td colspan="5">Aucune réponse !</td></tr>");
}
else
{
while($ligne = mysql_fetch_array($req))
{
$num_clt = $ligne["id_clt"];
$email = $ligne["email"];
$nom = $ligne["nom"];
$prenom = $ligne["prenom"];
$password_clt = $ligne["password"];
$etat2 = $ligne["etat2"];
if ($etat2 == "0")
{$bgcolorref = "#FF9900";}
else
{$bgcolorref = "#FFFFFF";}

echo("
affichage des champs ...");
}
}
}

$type est le nom d'une select pour une recherche par non ou par numero de client et $keyword par des mots clés...

ma question c'est comment affiché que le résulat par rapport à l'id de la table clients et l'id_clt de la table clients5 dans le tableau
et sans doublons?

Merci pour votre réponse et de votre patience...
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
3
Merci
ok j'ai trouvé !!! il suffisait de rajouter GROUP BY

ex: $req mysql_query("select * from clients2,clients5 where $type like "%$keyword%" AND clients2.id clients5.id_clt GROUP BY id_clt");

merci bien

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de rafou77
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004
0
Merci
Salut,

Dans ta requête tu fais un produit cartésien, c'est à dire que que pour chaque ligne de la table clients qui correspond à tes critères, tu affiches toutes les lignes de la table clients5 !

Donc tu dois effectuer une jointure entre ces deux tables en ajoutant dans ta condition where un critère d'égalité sur les clés :

... AND clients.id = clients5.id_clt

A+
Commenter la réponse de phpwankenobi
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
0
Merci
grand merci, ça va déjà mieux, mais reste le probleme quand je fais une recherche la table clients5 m'affiche les doublons de id_clt parce que la meme valeur ressort plusieurs fois, pour cause elle est en rapport avec id juste au dessus..

en fait dans la table clients5 id_clt et un numero de client et id qui est dans celle ci est un numero de produit, donc plusieurs produit pour le meme client = plusieurs meme numero de clients, reste plus qu'a savoir comment n'afficher qu'une seule fois ce client.

as tu une idée?

Merci
Commenter la réponse de rafou77
Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004
0
Merci
Ben ça tu n'y arriveras pas facilement avec une requête, il faut user d'algorithmes pour cela.

Par exemple stocker le code client dans une variable, pour chaque ligne retournée par ta requête, si le code cleint = code cleint précédent alors tu n'affiches pas sinon tu affiches etc....
Commenter la réponse de phpwankenobi
Messages postés
65
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
7 février 2007
0
Merci
euh oui mais là je comprend pas vraiment ou plutôt je ne sais pas faire, mais n'y a t'il pas moyen de regler ce probleme avec DISTINCT ou array_unique ? ou bien aurais tu un exemple pour ce que tu proposes?

Merci de ta patience
Commenter la réponse de rafou77