[RESOLU] Retours avec doublons

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Retours avec doublons

Re: [RESOLU] Retours avec doublons

par Krabosek » 18 sept. 2012, 21:17

Bonsoir,

Un petit truc qui me gène :

'INNER JOIN flw_collaboration'
Cette table n'a pas de préfixe, les autres en ont.

Ensuite, j'ai une forte tendance à laisser le SGBD se débrouiller via les procédures stockées. C'est sensé alleger le programme appelant & surtout réduire le volume des données en retour.

Pour ce qui concerne les doubles, il faut connaître le DDL (Data Definition Language).

Bonne soirée.

Re: Retours avec doublons

par weri » 17 sept. 2012, 13:14

GROUP BY marche impeccable. Merci!

Re: Retours avec doublons

par weri » 17 sept. 2012, 11:11

Salut Mazarini,

En ajoutant des critères je me rends en effet compte qu'il y a parfois des doublons, et parfois non, mais je n'arrive pas à comprendre à quoi c'est dû. Je mets ici la requête entière. Si tu as des commentaires sur la manière de faire aussi, je suis preneur, c'est la première fois que je fais ce genre de programme.
// Chaine SQL - - - - - - - - - - - - - - -
	$chSQL = "SELECT ll.lecon_liste_id,
        c.niveau,
        c.langue_mater,
        c.categorie,
        user.hn,
        ll.date_mise_en_ligne,
        c.titre_cible,
        c.titre_mater,
        ll.description_cible,
        ll.description_mater,
        ll.version,
        c.langue_cible,
        ll.titre_cible,
        ll.titre_mater,
        ll.lesson_code,
        c.type,
        c.collection_id
        FROM dt_lecon_liste AS ll
	INNER JOIN dt_collection AS c
	ON ll.collection_id = c.collection_id
	INNER JOIN user
	ON c.key_id = user.key_id
	INNER JOIN flw_collaboration
        ON ll.collection_id = flw_collaboration.collection_id
	WHERE ll.en_ligne_bool='1'";
	// AUTEUR : prise en compte d'un auteur
	if ($id_auteur!=0){
        $chSQL.="AND flw_collaboration.collaborateur_id ='$id_auteur'
        AND flw_collaboration.en_vigueur='1' ";
        }
        // LANGUE CIBLE
        $chSQL.="AND c.langue_cible='$langue_cible' ";
        // CATEGORIE
        if ($code_categorie!=-1){
        $chSQL.="AND c.categorie='$code_categorie' ";
        }
        // NIVEAU
        if ($code_niveau!=-1){
        $chSQL.="AND c.niveau='$code_niveau' ";
        }
        // MOTS-CLES
       	if ($mots_recherche!=""){
        $chSQL.="AND (MATCH (ll.titre_cible, ll.titre_mater, ll.description_cible, ll.description_mater) AGAINST ('$mots_recherche')
        OR MATCH (c.titre_cible, c.titre_mater, c.description_cible, c.description_mater) AGAINST ('$mots_recherche'))";
        }
        // ORDRE DE RENDU
        if ($mots_recherche==""){
        $chSQL.="ORDER BY ll.date_mise_en_ligne DESC ";
        }
        $chSQL.="LIMIT 50";
        mysql_query("SET NAMES 'utf8'");
       	$result = mysql_query($chSQL);

Re: Retours avec doublons

par Mazarini » 17 sept. 2012, 10:44

A mon avis le problème de doublons se trouve avant le "and" que tu montres.

Si tu ne peux pas supprimer les doublons du select, tu peux utiliser un group by ou un distinct

Retours avec doublons

par weri » 17 sept. 2012, 04:48

Bonjour!

Je fais un moteur de recherche pour mon site de e-learning et quand l'utilisateur saisit un mot-clé, j'explore le contenu de plusieurs colonnes, sur deux tables :
// MOTS-CLES
       	if ($mots_recherche!=""){
        $chSQL.="AND (MATCH (ll.titre_cible, ll.titre_mater, ll.description_cible, ll.description_mater) AGAINST ('$mots_recherche')
        OR MATCH (c.titre_cible, c.titre_mater, c.description_cible, c.description_mater) AGAINST ('$mots_recherche'))";
        }
Le problème et que j'ai des doublons dans le retour de ma recherche. Même si le mot-clé de la recherche n'apparaît qu'une fois dans l'ensemble des champs, il peut y avoir des doublons. Ce n'est pas très grave mais quand même, y a-t-il un moyen d'éviter ça?

Thanks,