Eviter doublons

Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 - 10 mars 2008 à 09:47
 SM - 28 nov. 2022 à 01:46
Bonjour,

J'ai un petit problème sur un requête SQL :

SELECT DISTINCT recettes.id, recettes.nom, recettes_images.images, recettes_etapes.etapes
FROM recettes
JOIN recettes_images ON recettes.id = recettes_images.id_recette
JOIN recettes_etapes ON recettes.id = recettes_etapes.id_recette
WHERE recettes.id =1;

J'obtiens ceci :

id     nom                                                             images             etapes
1     Cassoulet revisité au Confit et Couennes     image008.jpg     Cassoulet revisité au Confit et CouennesCassoulet ...
1     Cassoulet revisité au Confit et Couennes     image014.jpg     Cassoulet revisité au Confit et CouennesCassoulet ...
1     Cassoulet revisité au Confit et Couennes     image008.jpg     Cassoulet revisité au Confit et Couennes
Cassoule...
1     Cassoulet revisité au Confit et Couennes     image014.jpg     Cassoulet revisité au Confit et Couennes
Cassoule...

Le problème c'est que je ne devrais obtenir que les deux derniers résultats.
Car les deux premiers et les deux derniers sont exactement les mêmes...
Mais les deux derniers ont la mise en forme qu'il faut.

Quelqu'un aurait-il la solution pour ne serait-ce qu'obtenir qu'une seule fois le résultat et non pas deux

Merci par avance.

9 réponses

dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
10 mars 2008 à 17:48
bonjour


Ajouter "group by images" ????

Dom
0
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
10 mars 2008 à 22:54
J'ai essayé mais il m'affiché une erreur SQL tout le temps.


J'ai un peu avancé dans mon problème, enfin du moins je sais pourquoi il le fait deux fois...

Parceque j'ai deux étapes.


J'ai fais une recette avec 11 étapes, il m'affiche 11 fois le même texte mais les bonne images à la suite !


Autrement dis j'ai les bonnes images qui s'affiche au fur et à mesure mais j'ai 11 fois le même texte d'afficher...


SACHANT que si j'affiche chaque JOIN à part, chacun m'affiche correctement UNE seule fois ce que je souhaite.


En fait j'ai l'impression qu'il mixe les images en les étpes en même
temps du coup en fait pour cet exemple là j'ai 11x11 affichages...


DOnc plus j'ai d'étpes plus j'ai d'affiches... AAxAA au lieu d'avoir A...


Est-ce que quelqu'un aurait une idée d'ou peut venir ce problème
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
11 mars 2008 à 23:17
Bonsoir,
voilà comment je verrais la structure
de tes tables pour voir le résultat escompté.


*recettes      *recettes_etapes     *recettes_images  
recettes.id --->recettes.id        --->  recettes.id 
                recettes_etapes.etape --->recettes_etapes                                                                                 recettes_images .image


    (une jointure)           (jointure double)


tu auras alors
recettes.id / recettes_etapes.etape / recettes_images .image


PS:Espèrant que la mise en page sera parfaite.










<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.



<hr />





/PRE>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
11 mars 2008 à 23:20
je m' en doutais !

*recettes_images   
--> recettes.id  
-->recettes_etapes.etape 
    recettes_images .image<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0

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

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
11 mars 2008 à 23:27
Autre proposition:


*recettes           * etapes       *   images
#recette.id  --      #etape.id   \-->  #image.id
                       \--> recette.id    \
                               image.id  ---\







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.



<hr />





/PRE>
0
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
11 mars 2008 à 23:35
Je m'excuse mais malgrés tes efforts je ne comprend rien à ce que tu as écris.
Et malgrés vos nombreux efforts sur plusieurs forums, j'ai décidé par changer mes tables pour ne faire qu'un seul JOIN du coup ce n'est pas exactement ce que je souhaitais, mais par contre au moins maintenant tout fonctionne parfaitement.

Merci sincèrement pour tout
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
11 mars 2008 à 23:42
c' est justement du changement de la structure de tes tables dont je parlais.
Fais au moins l' effort de nous montrer ce que tu as fait pour que l' on s' instruit, nous aussi.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
11 mars 2008 à 23:46
Voilà les deux tabes que j'avais avant :

TABLE `recettes_etapes` (
  `id` int(11) NOT NULL auto_increment,
  `id_recette` int(11) NOT NULL,
  `etapes` text NOT NULL,
  PRIMARY KEY  (`id`)
);

TABLE `recettes_images` (
  `id` int(11) NOT NULL auto_increment,
  `id_recette` int(11) NOT NULL,
  `image` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);

Voilà la table que j'ai maintenant :

TABLE `recettes_etapes` (
  `id` int(11) NOT NULL auto_increment,
  `id_recette` int(11) NOT NULL,
  `etapes` text NOT NULL,
  `image` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);

Cela est je ne vous le cache pas plus court, plus facile d'utilisation, et plus facile d'optimisation...
Mais la base est qu'on m'avait demandé de codé avec les deux premières bases, donc j'ai essayé et...échoué
Mais ce n'est pas bien grave
Pour une autre fois peut-être

Merci !
0

je sais que c'est trop tard vu la date auquel vous avez posé cette question mais peut être pour des autres qu'ils auront ce problème  

l'astuce est la suivante :

Insérer vos éléments sur le tableau puis prévisualiser le scripte sql (comme vous le savez faire)

copier le code sql exemple : 

INSERT INTO `users` (`user_id`, `full_name`, `email`, `password`, `age`) VALUES (NULL, 'xxxxxxxx', '***@***', 'XXXXXXXX', '30'), (NULL, 'yyyyy', '***@***', 'YYYYYYY', '25'), (NULL, 'zzzzz', '***@***', 'ZZZZZZZ', '20')

Annuler l'insertion que vous avez fait et coller le code dans la partie sql puis sauvegarder

Bonne apprentissage pour tout le monde   

0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
11 mars 2008 à 23:55
Parfait !
J' aurais fait la même chose, s' il d' agissait, dès le départ de ma propre base.
Comme tu l' as dit, c' est ce qui arrive quand on travaille sur un éxistant.Et quand on tente de "bricoler",
on n' y arrive que rarement.

Amicalement.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0
Rejoignez-nous