Page 1 sur 1
Requete - créer une liste sans doublon
Posté : 06 févr. 2006, 19:22
par pixi
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
Posté : 06 févr. 2006, 19:36
par Truc
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
Posté : 06 févr. 2006, 19:50
par pixi
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.
Posté : 06 févr. 2006, 20:12
par Truc
tu est sûr ?
j'ai remplacé "GROUP BY" par "ORDER BY"
Posté : 06 févr. 2006, 20:17
par patami
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'];
}
Posté : 06 févr. 2006, 20:51
par pixi
Truc, désolé ça fonctionne, tu as raison. Mais je n'arrive pas à organiser les résultats par catégorie
Posté : 06 févr. 2006, 20:59
par Truc
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.
Posté : 06 févr. 2006, 21:51
par Invité
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");
Posté : 06 févr. 2006, 21:52
par pixi
[Résolu]
Posté : 06 févr. 2006, 22:09
par albat
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...
