簡體   English   中英

執行聯接時SQL Server表出錯

[英]Error on SQL Server tables while performing a join

我正在嘗試在4個表計划表,員工表,機器表和板式表之間執行聯接。

問題是,在計划表中,其主鍵是日期,而在表的其余部分,其主鍵為char。 我正在嘗試將表中的主鍵轉換為char以使其與其他鍵相同,但是我不知道如何。 這是我到目前為止所做的

create table Machine
(
    MachineID char(5),
    MachineType varchar(10) NOT NULL,
    MachineStatus varchar(10)NOT NULL
)

create table Employee
(
    EmployeeID char(5) Primary Key,
    EmployeeName varchar(30) NOT NULL,
)

create table Plate
(
    PlateID char(5) Primary Key,
    PlateModel varchar(30) NOT NULL,
)

create table MachineSchedule
(
    DateSchedule date Primary Key,
)

這是我的加入

SELECT Employee.EmployeName, Plate.PlateModel, Machine.MachineID, Machine.MachineType, Machine.MachineStatus
FROM Employee, Plate, Machine
JOIN MachineSchedule
ON MachineSchedule.DateSchedule=Machine.MachineID;

這是從字符串轉換日期和/或時間時,轉換失敗的錯誤

表格設計及其關系未正確完成。 基於此設計和關系最簡單的解決方案,我的意思是使查詢沒有錯誤:

DROP TABLE [MachineSchedule];

創建表

CREATE TABLE [dbo].[MachineSchedule](
    [DateSchedule] [date] NOT NULL,
    [MachineID] [char](5) NULL,
PRIMARY KEY CLUSTERED 
(
    [DateSchedule] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

變更查詢

SELECT Employee.EmployeeName, Plate.PlateModel, Machine.MachineID, Machine.MachineType, Machine.MachineStatus
FROM Employee, Plate, Machine
JOIN MachineSchedule
ON MachineSchedule.MachineID = Machine.MachineID;

您的表格結構不正確,您應為整數鍵(而不是char或datetime)使用整數數據類型,因為它會創建索引,並且我們無法將基於char和date數據類型的表連接在一起,因為它們的值永遠不會相同; 最后,from子句中其他表的聯接在哪里。 員工,印版,機器應有加入條件。

並且主鍵和外鍵約束也丟失了

您認為日期列=字符列?

與conver一起使用以char例如

在cast(m.id作為char(20))= ma.id或更新列類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM