Posez votre question Signaler

{SQL Server} Vue avec deux SELECT

bobenausaure 220Messages postés 13 juillet 2007Date d'inscription 18 mai 2012Dernière intervention - Dernière réponse le 17 nov. 2009 à 00:06
Bonjour,
je souhaite créer une vue afin d'afficher tous les produits de ma BdD. Un produit est soit un DVD soit un roman (héritage). Dans ma table PRODUIT, j'ai numprod, titreprod et annee. Dans ma table DVD, j'ai realisateur (+ numprod, titreprod et annee) et dans ma table ROMAN, j'ai auteur (+ numprod, titreprod et annee).
Ma vue ressemble à ça :
create view affich_prod
as
select p.titreprod, p.annee
from dvd d, produit p
where d.numprod = p.numprod
or
select p.titreprod, p.annee
from roman r, produit p
where r.numprod = p.numprod;
go
et le message d'erreur est : Expression de type non booléen spécifiée dans un contexte où une condition est attendue, près de ';'.
est-il possible de créer une vue avec 2 select ?
si non, comment puis-je faire ?
merci d'avance.
Lire la suite 

{SQL Server} Vue avec deux SELECT »

8 réponses
Réponse
+0
moins plus
Salut, il faut que tu crées une requête union, exemple

SELECT numprod, titreprod, annee
FROM ROMAN
UNION
SELECT numprod, titreprod, annee
FROM DVD
UNION
SELECT numprod, titreprod, annee
FROM PRODUIT

ça devrait marcher

Tiens moi au courant
erickacou- 8 juin 2009 à 19:50
Salut , Attention lis bien la requête-union que je t'ai envoyée, dans le From, j'ai pas deux tables. Tu as trois tables, tu devrais avoir (3) Select et (2) Union

Bye
bobenausaure- 9 juin 2009 à 10:23
ah oui d'accord.
sauf que je veux afficher tous les produits, en affichant aussi l'auteur pour les romans et le réalisateur pour les DVD.

donc je fais :

create view affich_prod
as
SELECT numprod, auteur, annee, titreprod
FROM ROMAN
UNION
SELECT numprod, realisateur, annee, titreprod
FROM DVD
UNION
SELECT numprod, titreprod, annee
FROM PRODUIT
go


mais il m'affiche une erreur : Toutes les requêtes combinées à l'aide d'un opérateur UNION, INTERSECT ou EXCEPT doivent posséder un même nombre d'expressions dans leurs listes cibles.

j'ai compris l'erreur : 4 colonne pour roman et DVD et 3 pour produit, ce qui ne va pas, mais je ne vois pas comment faire...
bobenausaure- 9 juin 2009 à 10:39
j'ai testé également ceci :

create view affich_prod
as
select p.titreprod, d.realisateur, p.annee
from produit p, dvd d
where p.numprod = d.numprod
union
select p.titreprod, r.auteur, p.annee
from produit p, roman r
where p.numprod = r.numprod
go

mais il me dit que le type de données text ne peut être sélectionné en tant que distinct car il n'est pas comparable...
Ajouter un commentaire
Réponse
+0
moins plus
Regarde bien dans cette séquence tu appelles 3 champs

>> UNION
SELECT numprod, titreprod, annee
FROM PRODUIT
go


Pendant que dans les autres tu appelles 4 champs, regarde bien la syntaxe que je t'ai envoyée

Bonne journée
bobenausaure- 9 juin 2009 à 14:40
oui mais je ne veux pas que le numéro et le titre d'affiché, je veux également le reste...
Ajouter un commentaire
Réponse
+0
moins plus
pouvez-vous essayer:

create view affich_prod as
(select p.titre,p.anne,d.realisateur from dvd d, produit p where d.numprod = p.numprod)
union
(select p.titre,p.anne,r.auteur from produit p, roman r where p.numprod = r.numprod)



Tenez moi au courant! Merçi.
Ajouter un commentaire
Ce document intitulé « {SQL Server} Vue avec deux SELECT » 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 ?