2011-09-22 89 views
3

我需要一个显示每个位置(包括prénom_nom,numéro_Teléphone,niv,no_Modèle,année)和所有Paiements的视图。最后由id_Location命令。INNER JOIN IN VIEW的问题

我试试这个,但它不是工作

CREATE View On_locations_Clients_Paiements AS 

SelectClients.prénom_Nom,Clients.numéro_Teléphone,Véhicules.niv,Véhicules.no_Modèle, 
Véhicules.année,Paiements.montant 

FROM Location 
INNER JOIN Location ON Clients.id_Client=Location.id_Client 
INNER JOIN Véhicules ON Location.niv=Véhicules.niv 
INNER JOIN Modèle ON Véhicules.no_Modèle=Modèle.no_Modèle 
INNER JOIN Paiements ON Location.id_Location = Paiements.id_Location 



--ORDER BY where id_Location = id_Location 

这是选择(我不知道,如果它的右)

CREATE View On_locations_Clients_Paiements AS 

Select Clients.prénom_Nom,Clients.numéro_Teléphone,Véhicules.niv,Véhicules.no_Modèle,Véhicules.année,Paiements.montant 

这些都是我的表

CREATE TABLE [dbo].[Location](
    PK[id_Location] [char](6) NOT NULL, 
[debut_Location] [datetime] NULL, 
[premier_Paiement] [datetime] NULL, 
[paiment_Mensuel] [smallmoney] NULL, 
[nombre_Mensualité] [char](2) NULL, 
    FK[id_Client] [char](6) NULL, 
[no_Termes_location] [char](6) NULL, 
    FK[niv] [char](20) NULL, 


CREATE TABLE [dbo].[Clients](
    PK[id_Client] [char](6) NOT NULL, 
[prénom_Nom] [varchar](50) NULL, 
[adresse] [varchar](50) NULL, 
[ville] [varchar](20) NULL, 
[province] [varchar](20) NULL, 
[code_Postal] [char](6) NULL, 
[numéro_Teléphone] [numeric](10, 0) NULL, 


CREATE TABLE [dbo].[Véhicules](
    PK[niv] [char](20) NOT NULL, 
[no_Modèle] [char](6) NULL, 
[année] [char](4) NULL, 
[kilométrage] [int] NULL, 
[location_Antérieure] [char](3) NULL, 
[valeur] [smallmoney] NULL, 
[tranmission_Automatique] [char](3) NULL, 
[airClimatise] [char](3) NULL, 
[antiDemarreur] [char](3) NULL, 
[no_Couleur] [char](6) NULL, 

    CREATE TABLE [dbo].[Paiements](
    PK[id_paiement] [char](6) NOT NULL, 
[date] [smalldatetime] NULL, 
[montant] [smallmoney] NULL, 
    FK[id_Location] [char](6) NOT NULL, 
+1

什么不起作用?您是否收到结果,它们是否有误,是否会给您一个错误?\ – Wil

+0

消息1013,Niveau 16,1,ProcédureOn_locations_Clients_Paiements,Ligne 5 子句FROM中的对象“位置”和“位置”具有相同的名称暴露。使用相关名称来区分。 – FrankSharp

+0

其有线,因为我给扩展的名称.... – FrankSharp

回答

2

你需要采取第二位置并表:

CREATE View On_locations_Clients_Paiements AS 

Select c.prénom_Nom 
     ,c.numéro_Teléphone 
     ,v.niv 
     ,v.no_Modèle 
     ,v.année 
     ,p.montant 
FROM Location AS l 
INNER JOIN Clients AS c ON c.id_Client=l.id_Client 
INNER JOIN Véhicules AS v ON l.niv=v.niv 
INNER JOIN Modèle AS m ON v.no_Modèle=m.no_Modèle 
INNER JOIN Paiements AS p ON l.id_Location = p.id_Location 
+0

ORDER BY where id_Location = id_Location给我错误 – FrankSharp

+1

您不能在视图中使用'ORDER BY'。您需要从视图中对“SELECT”结果进行排序。如果你需要包含一个来自'Location'的列,只需要将该列添加到视图中的'SELECT'(显然前缀为'l'。 – Wil

+0

)我有一个问题,他们只是返回他们付款的客户端。给我所有的位置为每个客户和paiment如果它的情况下 – FrankSharp

0

更改:

FROM Location 
INNER JOIN Location ON Clients.id_Client=Location.id_Client 

到...

FROM Location 
INNER JOIN Clients ON Clients.id_Client=Location.id_Client 

更新 - 你引用Location两次,Clients从来没有,所以我认为你有某种形式的复制/粘贴错误。

+0

这将无法正常工作,因为他从来没有'从客户'选择'首先。 – Wil

+0

@wil - 是刚刚更新:) – JNK