Page 1 sur 1

requête SQL difficile à formuler

Posté : 04 janv. 2014, 17:40
par caema
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!

Re: requête SQL difficile à formuler

Posté : 04 janv. 2014, 19:33
par niuxe
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

Re: requête SQL difficile à formuler

Posté : 04 janv. 2014, 20:22
par caema
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

Re: requête SQL difficile à formuler

Posté : 04 janv. 2014, 20:33
par yann18
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;

Re: requête SQL difficile à formuler

Posté : 05 janv. 2014, 12:11
par caema
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 ;-)