在视图中INNER JOIN的问题

时间:2011-09-22 17:55:05

标签: sql-server

我需要一个显示每个位置的视图(包括prénom_Nom,numéro_Teléphone,niv,no_Modèle,année)和所有Paiements。最后按id_Location排序。

我试试这个,但它不起作用

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,

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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从未如此,我认为您有某种类型的复制/粘贴错误。