{Oracle} Création d'une vue sur plusieurs tables [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
24 février 2010
-
Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
24 février 2010
-
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

6 réponses

Messages postés
37
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
26 mai 2010
1
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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??
Messages postés
37
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
26 mai 2010
1
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 !
Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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 ^^
Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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
/
Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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
/