Création
d'entreprise
Posez votre question Signaler

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

krimo89 5Messages postés 24 février 2010Date d'inscription 24 février 2010Dernière intervention - Dernière réponse le 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
Lire la suite 

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

6 réponses
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
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??
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
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 ^^
Ajouter un commentaire
Réponse
+0
moins plus
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
/
Ajouter un commentaire
Réponse
+0
moins plus
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
/
Ajouter un commentaire
Ce document intitulé « {Oracle} Création d'une vue sur plusieurs tables » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?