[SQL] Problème jointure
Fermé
mick1066
-
21 mai 2010 à 11:28
micka1066 Messages postés 2 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 23 mai 2010 - 23 mai 2010 à 19:28
micka1066 Messages postés 2 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 23 mai 2010 - 23 mai 2010 à 19:28
A voir également:
- [SQL] Problème jointure
- Récupération serveur sql - Télécharger - Gestion de données
- Soustraction sql - Forum Programmation
- Sql replace plusieurs valeurs - Forum Programmation
- Sql query - Télécharger - Gestion de données
- Sql date - 1 mois - Forum Programmation
5 réponses
Tes tables sont toutes liées entre elles, même si ce ne sont pas des liens directs, donc tu peux logiquement faire ta requête de cette manière :
( Je ne fais jamais de JOIN pour mes jointures, peut être à tord ^^ )
Pour le count, il faut le mettre dans le select, et tu peux également lui attribuer un nom avec le "AS" pour que ce soit plus clair. Bon tout ceci est à vérifier mais je pense que c'est proche de la solution ;)
( Je ne fais jamais de JOIN pour mes jointures, peut être à tord ^^ )
SELECT film.titre, COUNT(film_actor.actor_id) as nb_acteur FROM film, film_actor, film_category, category WHERE film.film_id = film_category.film_id AND film_category.category_id = category.category_id AND film.film_id = film_actor.film_id AND category.name = "Music" ORDER BY nb_acteur DESC;
Pour le count, il faut le mettre dans le select, et tu peux également lui attribuer un nom avec le "AS" pour que ce soit plus clair. Bon tout ceci est à vérifier mais je pense que c'est proche de la solution ;)
Bonjour,
Merci bien pour vos réponses !
Je vais aller voir tout ça et je vous redis.
Pour Titus: Je sais mais la donnée nous oblige à faire les jointures à l'aide de JOIN et non pas dans le where).
Bonne journée.
Merci bien pour vos réponses !
Je vais aller voir tout ça et je vous redis.
Pour Titus: Je sais mais la donnée nous oblige à faire les jointures à l'aide de JOIN et non pas dans le where).
Bonne journée.
micka1066
Messages postés
2
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
23 mai 2010
23 mai 2010 à 19:02
23 mai 2010 à 19:02
Re,
Merci bien pour votre aide, j'ai réussi à faire la requête, il reste cependant un point. Je dois trier l'affichage par Nombre D'acteur décroissant:
Voici la requête:
SELECT film.title, COUNT(film_actor.actor_id) AS NbrActeur
FROM actor
INNER JOIN film_actor ON (actor.actor_id = film_actor.actor_id)
INNER JOIN film ON (film_actor.film_id = film.film_id)
INNER JOIN film_category ON (film.film_id = film_category.film_id)
INNER JOIN category ON (film_category.category_id = category.category_id)
WHERE category.name ='Music'
GROUP BY film.title;
Voila et à la fin j'aimerai bien trier par NbrActeur decroissant, le seul truc c'est que NbrActeur n'est pas reconnu.
Quelqu'un aurait-il une idée?
Également si je souhaitait afficher que les films qui contienne plus de 7 acteur. Je ne peux pas utiliser NbrActeur comme une variable et faire
WHERE category.name = 'Music' AND NbrActeur > 7
Voila je suis perdu en gros :(
Merci bien pour votre aide, j'ai réussi à faire la requête, il reste cependant un point. Je dois trier l'affichage par Nombre D'acteur décroissant:
Voici la requête:
SELECT film.title, COUNT(film_actor.actor_id) AS NbrActeur
FROM actor
INNER JOIN film_actor ON (actor.actor_id = film_actor.actor_id)
INNER JOIN film ON (film_actor.film_id = film.film_id)
INNER JOIN film_category ON (film.film_id = film_category.film_id)
INNER JOIN category ON (film_category.category_id = category.category_id)
WHERE category.name ='Music'
GROUP BY film.title;
Voila et à la fin j'aimerai bien trier par NbrActeur decroissant, le seul truc c'est que NbrActeur n'est pas reconnu.
Quelqu'un aurait-il une idée?
Également si je souhaitait afficher que les films qui contienne plus de 7 acteur. Je ne peux pas utiliser NbrActeur comme une variable et faire
WHERE category.name = 'Music' AND NbrActeur > 7
Voila je suis perdu en gros :(
Sasa93
Messages postés
252
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
27 février 2012
20
23 mai 2010 à 19:04
23 mai 2010 à 19:04
J'ai une petite question à te demander tu travail sur quel SGBD ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
micka1066
Messages postés
2
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
23 mai 2010
Modifié par micka1066 le 23/05/2010 à 19:41
Modifié par micka1066 le 23/05/2010 à 19:41
Salut,
j'utilise mySQL avec PHPMyAdmin.
J'ai trouvé comment afficher que les film ayant plus de 7 acteurs, me reste plus qu'a les trier par ordre décroissant du nombre d'acteur.
Voila ma requête acteullement:
SELECT film.title, COUNT(*) AS NbrActeur
FROM actor
INNER JOIN film_actor ON (actor.actor_id = film_actor.actor_id)
INNER JOIN film ON (film_actor.film_id = film.film_id)
INNER JOIN film_category ON (film.film_id = film_category.film_id)
INNER JOIN category ON (film_category.category_id = category.category_id)
WHERE category.name ='Music'
GROUP BY film.title HAVING COUNT(*) > 7 ;
EDIT: Voila c'est tout bon! Pour ceux que sa intéresse:
SELECT film.title, COUNT(*) AS NbrActeur
FROM actor
INNER JOIN film_actor ON (actor.actor_id = film_actor.actor_id)
INNER JOIN film ON (film_actor.film_id = film.film_id)
INNER JOIN film_category ON (film.film_id = film_category.film_id)
INNER JOIN category ON (film_category.category_id = category.category_id)
WHERE category.name ='Music'
GROUP BY film.title HAVING COUNT(*) > 7 ;
ORDER BY COUNT(*) DESC;
j'utilise mySQL avec PHPMyAdmin.
J'ai trouvé comment afficher que les film ayant plus de 7 acteurs, me reste plus qu'a les trier par ordre décroissant du nombre d'acteur.
Voila ma requête acteullement:
SELECT film.title, COUNT(*) AS NbrActeur
FROM actor
INNER JOIN film_actor ON (actor.actor_id = film_actor.actor_id)
INNER JOIN film ON (film_actor.film_id = film.film_id)
INNER JOIN film_category ON (film.film_id = film_category.film_id)
INNER JOIN category ON (film_category.category_id = category.category_id)
WHERE category.name ='Music'
GROUP BY film.title HAVING COUNT(*) > 7 ;
EDIT: Voila c'est tout bon! Pour ceux que sa intéresse:
SELECT film.title, COUNT(*) AS NbrActeur
FROM actor
INNER JOIN film_actor ON (actor.actor_id = film_actor.actor_id)
INNER JOIN film ON (film_actor.film_id = film.film_id)
INNER JOIN film_category ON (film.film_id = film_category.film_id)
INNER JOIN category ON (film_category.category_id = category.category_id)
WHERE category.name ='Music'
GROUP BY film.title HAVING COUNT(*) > 7 ;
ORDER BY COUNT(*) DESC;
21 mai 2010 à 15:44
ta requête me semble correcte, néanmoins j'aurais rajouté un , avant le ORDER BY.