{Oracle} Création d'une vue sur plusieurs tables

Résolu/Fermé
krimo89 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 11:44
krimo89 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 17:00
Bonjour,
Je développe une application du genre allocine dans le cadre de mes projet d'étude.
je suis actuellement entrain de concevoir une vue sur plusieurs table.
Ma bdd possède une table FILM qui contient des informations relative à un film.
je possède aussi une table critique qui correspond au CRITIQUE relative d'un personne sur un film. Bien évidemment, la table CRITIQUE possède une clé étrangère référençant un film.
Le problème:
je souhaite créer une vue ou je puisse avoir les informations d'un film et les critiques qui lui sont associées.
Le problème est que lorsque je crée ma vue, je n'ai que les informations concernants les films ayant au moins une critique. Or, je souhaiterais aussi avoir les films n'ayant pas de critiques.

Est-il possible de réaliser cela?

Je vous joins le code de ma vue que j'ai fais
[code]
CREATE OR REPLACE FORCE VIEW "INFORMATION_FILM" AS
SELECT AM_FILM.TITREF, AM_FILM.DATESORTIEF, AM_FILM.SYNOPSYSF, --ce qui concerne les films
AM_CRITIQUE.commentaireC--ce qui concerne les critiques

FROM AM_FILM, AM_CRITIQUE

WHERE AM_CRITIQUE.ID_FILM = AM_FILM.ID_FILM
/
/code
j'espère que j'ai été clair dans mes explications... ^^
Merci pour vos aides
A voir également:

6 réponses

SuzukMan Messages postés 37 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 mai 2010 1
24 févr. 2010 à 14:40
Il faut que face une jointure externe pour avoir les film qui n'ont pas de commentaire cela donne donc :

CREATE OR REPLACE FORCE VIEW "INFORMATION_FILM" AS
SELECT AM_FILM.TITREF, AM_FILM.DATESORTIEF, AM_FILM.SYNOPSYSF, --ce qui concerne les films
AM_CRITIQUE.commentaireC--ce qui concerne les critiques

FROM AM_FILM F LEFT JOIN AM_CRITIQUE C ON F .ID_FILM = C.ID_FILM

La sa devrait être mieux !
Tu me redis !
1
krimo89 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 14:40
Merci, ça fonctionne... je ne savais pas que l'on pouvais utiliser cela... ça fesait un bon moment que je cherchais...

Sinon, je voulais aussi savoir si c'est possible d'utiliser la clause 'LEFT JOIN ON' sur plusieurs autre table. Je m'explique, dans la vue que je veux créer, je veux y ajouter aussi les récompenses (meilleurs réalisation par exemple). Or, un film peut recevoir plusieurs récompenses. J'ai pour cela créer un table association qui contient la référence vers un film et une référence vers une récompense. Est-ce possible??
0
SuzukMan Messages postés 37 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 mai 2010 1
24 févr. 2010 à 15:43
Oui une jointure externe peut être fait sur plusieurs table aucun problème tu peux regarder la doc sur internet tu aura la syntaxe et des exemples !
0
krimo89 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 15:53
D'abord merci de prendre du temps pour me répondre...
j'ai trouvé sur le net des liens expliquants le left join sur plusieurs tables...
Mais là ou je bloque est celui que je t'ai postuler précédemment c'est à dire dans le cas où j'ai une table association. Je précise: je possède ma table FILM qui a pour identifiant ID_FILM et une table RECOMPENSE qui possède comme identifiant ID_recompense. Pour faire une relation entre ces deux tables, je possède une table association qui permet de faire référencé un film et sa (ses récompenses)..; Si tu peux me donner un exemple, cela m'aiderai à comprendre ^^
0

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

Posez votre question
krimo89 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 16:11
J'ai essayé de faire quelquechose et voilà ce que ça donne... mais cela ne fontionne toujours pas
CREATE OR REPLACE FORCE VIEW "MON_TEST" ("TITREF", "TYPER") AS
SELECT F.TITREF, R.TYPER
from AM_FILM F natural join AM_RECEVOIR_FILM G left join AM_RECOMPENSE R on G.id_recopense=R.id_recompense
/
0
krimo89 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 17:00
Voilà, j'ai réussi,
je pose le code pour les personnes qui serait succeptible d'étre confronté au même problème

CREATE OR REPLACE FORCE VIEW "MON_TEST" ("TITREF", "TYPER") AS

SELECT F.titreF, nvl(R.TYPER, 'aucune récompense') as prix

from AM_FILM F LEFT JOIN (AM_RECEVOIR_FILM G natural join AM_RECOMPENSE R) on F.id_film=G.id_film
/
0