Affichage de doublons dans une recherche sur deux tables

Résolu
rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007 - 16 sept. 2004 à 10:13
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...

5 réponses

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
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
3
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
16 sept. 2004 à 12:48
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+
0
rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007
16 sept. 2004 à 15:00
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
0
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
16 sept. 2004 à 16:32
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....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rafou77 Messages postés 65 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 7 février 2007
16 sept. 2004 à 16:38
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
0
Rejoignez-nous