Requete - créer une liste sans doublon

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 : Requete - créer une liste sans doublon

par albat » 06 févr. 2006, 22:09

Le tag [Résolu] s'obtient en utilisant le bouton "Mettre Résolu".
Cette fonctionnalité est accessible aux membres inscrits et non aux invités.

Si tu veux t'inscrire, c'est l'occasion... ;)

par pixi » 06 févr. 2006, 21:52

[Résolu]

par Invité » 06 févr. 2006, 21:51

Merci à tous les deux!
Ça fonctionne. J'ai juste corrigé la requete:
$req_index= mysql_query("SELECT L.*,C.* FROM catalogue AS L LEFT JOIN categories AS C ON L.id_cat = C.id ORDER BY C.id");

par Truc » 06 févr. 2006, 20:59

niveau organisation la proposition de patami devrait fonctionner.

tu initialise une variable pour les catégorie si elle est différente de la précédente affiochage de la catégorie.

par pixi » 06 févr. 2006, 20:51

Truc, désolé ça fonctionne, tu as raison. Mais je n'arrive pas à organiser les résultats par catégorie

par patami » 06 févr. 2006, 20:17

salut

je dirais (non testé) :


$req_index=('SELECT `L`.`id_cat` AS `ref_cat`,
	   		`L`.`titre`,
	   		`C`.`id_cat`,
	   		`C`.`nom`
	  		 FROM `L`
	  		 LEFT JOIN `C`
	   		 ON `L`.`id_cat` = `C`.`id_cat`
	  		 ORDER BY `C`.`nom`, `L`.`titre`') or die ('Erreur mysql : '.mysql_error());
$last_id_cat='';
while ($data_index = mysql_fetch_array($req_index))
{

	//affichage nom de la catégorie
	if ($data_index['ref_cat'] != $last_id_cat)
	{
	echo '<br /><span style="font-weight:bold; text-decoration : underline;">'.$data_index['nom'].'</span><br />';
	}
	
	//affichage nom du livre
	echo $data_index['titre'].'<br />';

$last_id_cat=$data_index['ref_cat'];
}

par Truc » 06 févr. 2006, 20:12

tu est sûr ?

j'ai remplacé "GROUP BY" par "ORDER BY"

par pixi » 06 févr. 2006, 19:50

Merci pour ton aide.
J'ai déjà essayé cette solution et j'optiens des resultats incomplet, en fait un seul résultat par catégorie s'affiche avec cette méthode.

par Truc » 06 févr. 2006, 19:36

Salut,

à vu de nez je dirais qu'il suffit d'enlever cette clause de regroupement et a la place une clause de tri:
SELECT C.*,L.* FROM categories AS C, livres AS L WHERE C.id_cat=L.id_cat ORDER BY C.id_cat
en passant évite d'utiliser * pour séléctionner tous les champ mieux vaut appler que les champs dont tu auras besoin

Requete - créer une liste sans doublon

par pixi » 06 févr. 2006, 19:22

Bonjour à tous

j'ai deux tables la première contient des catégories
par ex.:
id_cat nom
1 cat1
2 cat2
3 cat3...

la deuxième table des livres
id id_cat titre
1 2 le rouge et le noir
2 3 asterix et obélix
3 1 dictionnaire larousse
4 1 le petit robert

En fait je voudrais créer une liste en évitant les doublons
À l'affichage j'aimerais avoir:

cat 1
dictionnaire larousse
le petit robert

cat 2
le rouge et le noir

cat 3
astérix et obélix

J'ai essayé :
SELECT C.*,L.* FROM categories AS C, livres AS L WHERE C.id_cat=L.id_cat GROUP BY C.id_cat 
mais ça ne fonctionne pas :(

Est-ce que quelqu'un aurait une idée?

Merci