【发布时间】:2016-01-16 18:07:31
【问题描述】:
我正在尝试在 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;
这是它给出的错误从字符串转换日期和/或时间时转换失败。
【问题讨论】:
-
您发布的表定义真的完整吗?您在 MachineSchedule 表中可能没有 MachineID 列吗?
-
MachineSchedule.DateSchedule 是 date 类型,但 Machine.MachineID 是 char(5) 类型。您无法检查日期和字符串是否相等。 ID的格式是什么?
-
将 machineID 添加到 MachineSchedule 表中。
-
您如何将日期值塞进 5 个字符中,然后将其命名为
MachineID?没有意义。如果您使用特殊的日期编码,则还必须将其合并到逻辑中。但更有可能的是,从名称来看,这些表似乎一开始都没有以有意义的方式相互关联。 -
所以我应该像其他ID一样更改DateSchedule吗?我刚开始在课堂上学习 sql,这实际上是他们给我的基础知识。对于加入的东西,我在加入 ID 时会从其他表中调用,这就是为什么我没有将机器 ID 纳入机器计划。
标签: mysql sql-server sql-server-2016