2011-09-22 130 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