Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 19/02/2020 13:12:39
- francois
- Membre
jointures sql entre 3 tables
Je veux faire une requête qui retourne un résultat en négatif.
une table films
une table pays
une table box-office qui va chercher le titre du film dans la table films et le nom du pays dans la table payd
la requête ne peut faire qu'un seul select, le but trouver la liste des pays dans lesquels un film n'a pas été pas été présent au box office.
Exemple, le film "le baltringue" a été vu en France mais pas en Italie, le résultat de la requête doit retourner "Italie, le baltringue".
Hors ligne
#2 19/02/2020 13:14:58
- rjuju
- Administrateur
Re : jointures sql entre 3 tables
Quel problème rencontrez-vous exactement ?
Julien.
https://rjuju.github.io/
Hors ligne
#3 19/02/2020 13:35:59
- francois
- Membre
Re : jointures sql entre 3 tables
je n'arrive pas à récupérer le résultat attendu.
select p.pays, f.film from box_offices bx inner join films f on bx.film_id = f.id inner join pays p on bx.pays_id = p.id;
Cette requête me renvoie liste des films et pays présent au box office, je cherche à faire l'opposé, obtenir la liste des films et pays absents aux box office.
Hors ligne
#4 19/02/2020 14:16:32
- Marc Cousin
- Membre
Re : jointures sql entre 3 tables
Un truc de ce genre ?
select p.pays, f.film from bx.film_id = f.id cross join pays p where not exists (select 1 from box_offices bx where bx.film_id = f.id and bx.pays_id = p.id)
Dernière modification par Marc Cousin (19/02/2020 14:16:57)
Marc.
Hors ligne
#5 19/02/2020 14:35:28
- francois
- Membre
Re : jointures sql entre 3 tables
Je viens de tester mais il y a une erreur sur le "=" de "from bx.film_id = f.id".
ERROR: syntax error at or near "="
Hors ligne
#6 19/02/2020 14:49:23
- rjuju
- Administrateur
Re : jointures sql entre 3 tables
Il manque une partie de la requête effectivement. J'imagine qu'il voulait dire:
select p.pays, f.film from box_offices bx inner join films f on bx.film_id = f.id cross join pays p where not exists (select 1 from box_offices bx where bx.film_id = f.id and bx.pays_id = p.id)
Julien.
https://rjuju.github.io/
Hors ligne
#7 19/02/2020 15:45:51
- francois
- Membre
Re : jointures sql entre 3 tables
C'est bon mais est-il possible de le faire avec un seul select çàd sans passer par la condition no exists, merci
Hors ligne
#8 19/02/2020 15:52:31
- rjuju
- Administrateur
Re : jointures sql entre 3 tables
Probablement, mais pourquoi cette solution ne vous convient pas ? Le fait que le mot clé SELECT apparaisse 2 fois n'est pas un bon argument.
Julien.
https://rjuju.github.io/
Hors ligne
#9 19/02/2020 16:06:18
- francois
- Membre
Re : jointures sql entre 3 tables
je suis d'accord avec vous c'est que je voulais faire mais c'est le challenge et c'est compliqué de remplacer le no exists
Hors ligne
#10 19/02/2020 16:35:16
- rjuju
- Administrateur
Re : jointures sql entre 3 tables
Je ne suis pas certain de comprendre quel est votre challenge.
Julien.
https://rjuju.github.io/
Hors ligne
#11 19/02/2020 16:58:34
- francois
- Membre
Re : jointures sql entre 3 tables
C'est une obligation de n'avoir qu'un seul select même si je suis d'accord avec vous.
Hors ligne
#12 19/02/2020 23:14:58
- alassanediakite
- Membre
Re : jointures sql entre 3 tables
Salut
Peut être...
select ... from (pays cross join film) left join box_offices on box_offices.idfilm=film.idfilm
where box_offices.idfilm is null
@+
Hors ligne
Pages : 1