[RESOLU] requête SQL difficile à formuler

Eléphanteau du PHP | 34 Messages

04 janv. 2014, 17:40

Bonjour à tous,

Je viens à vous car j'ai du mal à concevoir ma requête SQL pour les besoins d'un slider administrable en PHP.
Je vous expose vite fait ce que j'ai mis en place:

Je souhaite avoir une gestion dynamique des sliders pour le futur administrateur du site.
Il pourra donc ajouter/modifier/supprimer un slider à une page.
Pour cela, j'ai 2 tables:

table images
  • id
  • name: nom de l'image
  • slider_id: id du slider dans lequel l'image se trouvera
table sliders
  • id
  • name: nom de mon slider
  • page_id: id de la page sur laquelle sera présent le slider
J'ai ensuite écrit cette requête:
SELECT images.id, images.name, images.slider_id
FROM images
LEFT JOIN sliders ON sliders.id = images.slider_id
J'espérais qu'elle me permette de sélectionner toutes les images contenues dans un slider,
mais cela sélectionne en fait TOUTES les images présentes dans ma table images.

Donc en gros, j'ai ce résultat:
id name slider_id
1 30.jpg 1
2 31.jpg 1
3 32.jpg 1
4 33.jpg 2
5 34.jpg 2

Alors que je voudrais:
id name slider_id
4 33.jpg 2
5 34.jpg 2
(dans le cas où je veux les images du slider d'id 2 par exemple)

Voilà, j'espère avoir bien exposé mon problème, j'avoue que ce n'est pas facile d'aller au plus simple lol
Pourriez-vous m'aider à résoudre ce problème?

D'avance merci à vous!

Eléphant du PHP | 453 Messages

04 janv. 2014, 19:33

mais cela sélectionne en fait TOUTES les images présentes dans ma table images.
d'où le left join ou right join

ta requête est largement plus simple à faire :
SELECT
	i.id,
	i.name, 
	i.slider_id
FROM 
	images i,
	sliders s
WHERE
	s.id = i.slider_id
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Eléphanteau du PHP | 34 Messages

04 janv. 2014, 20:22

Je viens de tester votre requête dans phpMyAdmin, et j'obtiens exactement le même résultat qu'avec la requête précédente...
Est-ce normal?

Néanmoins, merci de vous pencher sur le sujet, c'est très aimable

Mammouth du PHP | 571 Messages

04 janv. 2014, 20:33

bonjour,
(dans le cas où je veux les images du slider d'id 2 par exemple)
si tu souhaites afficher les images du slider dont l'id est 2 :
SELECT images.id, images.name, images.slider_id
FROM images
 INNER JOIN sliders ON sliders.id = images.slider_id
WHERE sliders.id = 2;

Eléphanteau du PHP | 34 Messages

05 janv. 2014, 12:11

bonjour,
(dans le cas où je veux les images du slider d'id 2 par exemple)
si tu souhaites afficher les images du slider dont l'id est 2 :
SELECT images.id, images.name, images.slider_id
FROM images
 INNER JOIN sliders ON sliders.id = images.slider_id
WHERE sliders.id = 2;
C'est bien de cette manière que je dois formuler ma requête, il faut juste que
WHERE sliders.id = 2;
soit rendu dynamiquement maintenant, afin que le slider d'id 1 se place bien sur la bonne page ;-)