SQL查询错误:列名无效
我是SQL新手,我有这个问题,我似乎无法在谷歌上搜索。 这是我的作业,所以请耐心对待我的编码。 现在的问题是,我正在执行select查询,而SQL似乎无法识别我需要的列 这里是一个附加的图片,它只是说无效列,但很明显,该列存在 这是完整的代码SQL查询错误:列名无效,sql,sql-server,Sql,Sql Server,我是SQL新手,我有这个问题,我似乎无法在谷歌上搜索。 这是我的作业,所以请耐心对待我的编码。 现在的问题是,我正在执行select查询,而SQL似乎无法识别我需要的列 这里是一个附加的图片,它只是说无效列,但很明显,该列存在 这是完整的代码 create database Hairsalon use Hairsalon create table Employee ( Employee_ID int primary key, Name varchar(20),
create database Hairsalon
use Hairsalon
create table Employee
(
Employee_ID int primary key,
Name varchar(20),
Birthday date,
Gender char(1)
);
create table Inventory
(
Inventory_ID int primary key,
Name varchar(30),
Stock int
)
create table Record
(
Transaction_Number int primary key,
Transaction_Date date,
Transaction_Time time
);
alter table Record
drop column Transaction_Date
alter table Record
drop column Transaction_Time
alter table Record
add Transaction_DT varchar(30)
alter table Record
add Transaction_Description varchar(255)
Create table Inventory_Record
(
Transaction_Number int primary key foreign key references Record(Transaction_Number),
Inventory_ID int foreign key references Inventory(Inventory_ID),
);
create table Customer_Record
(
Transaction_Number int foreign key references Record(Transaction_Number),
Customer_ID int primary key,
Service_Description varchar(255),
Pay money
);
create table Customer
(
Customer_ID int foreign key references Customer_Record(Customer_ID),
Name varchar(20),
Payable money,
Session_DT varchar(20)
);
create table Employee_Record
(
Transaction_Number int primary key foreign key references Record(Transaction_Number),
Employee_ID int foreign key references Employee(Employee_ID),
Time_In time,
Time_Out time,
Record_Date date,
Customer_Count int
);
create table Salon
(
Customer_ID int foreign key references Customer_Record(Customer_ID),
Employee_ID int foreign key references Employee(Employee_ID),
Inventory_ID int foreign key references Inventory(Inventory_ID),
Transaction_Number int foreign key references Record(Transaction_Number)
);
alter table Customer
add Session_DT varchar(20)
alter table Customer
drop column Customer_ID
alter table Customer
add Customer_ID int foreign key references Customer_Record(Customer_ID)
alter table Customer_Record
add Employee_ID int foreign key references Employee(Employee_ID)
alter table Employee
add [Type] varchar(15)
alter table Employee
drop column Birthday
alter table Employee
drop column Birthday
alter table Employee_Record
drop column Time_In
alter table Employee_Record
drop column Time_Out
alter table Employee_Record
drop column Record_Date
alter table Employee_Record
add Time_In varchar(20)
alter table Employee_Record
add Time_Out varchar(20)
alter table Employee_Record
add Record_Date varchar(20)
alter table Employee_Record
drop column Customer_Count
insert into Employee
values(1,'Test Employee','M','Cashier','bday')
insert into Employee
values(-1,'Null','N','Null','Null')
insert into Employee values(1,'test1','M','HairDresser','9/8/2014')
INSERT INTO Record values(2,'')
INSERT INTO Customer_Record values(1,1,'asd',123.00,null)
INSERT INTO Customer values(1,'test1',0,'9/8/2014 8:16 AM')
SELECT * FROM Record
select * from Customer
SELECT * FROM Customer_Record
SELECT * FROM Employee
SELECT DISTINCT Customer.Name as 'Customer Name', Employee.Name as 'Attendee'
FROM Customer, Customer_Record, Employee_Record, Employee
WHERE ( Customer_Record.Transaction_Number = Employee_Record.Transaction_Number
AND Employee_Record.Employee_ID = Employee.Employee_ID
AND Customer.Customer_ID = Customer_Record.Customer_ID
) OR ( Customer_Record.Transaction_Number = Employee_Record.Transaction_Number
AND Customer_Record.Employee_ID = -1
AND Customer.Customer_ID = Customer_Record.Customer_ID
)
insert into Employee_Record values(9,1,'10:00','10:99','date')
select * from Record
select * from Customer
select * from Employee
select * from Employee_Record
select * from Customer_Record
select count(Customer_ID) from Customer
select count(Transaction_Number) from Record
insert into Customer
values(1,'test',120,DATEFROMPARTS(32,12,31))
INSERT INTO Customer_Record values(1,1,'Long Haired Customer: ',0, null)
DELETE FROM Customer WHERE Customer_ID = 1
DELETE FROM Customer
DELETE FROM Customer_Record
DELETE FROM Record
DELETE FROM Employee
DELETE FROM Employee_Record
DELETE FROM Inventory
DELETE FROM Inventory_Record
commit
根据您提供的DDL,似乎很明显客户记录没有员工ID 您可能混淆了Customer_记录和Employee_记录,或者Employee_ID和Customer_ID,但有些地方不对劲
编辑我没有注意到您更改脚本中的表以添加缺少的列。在这种情况下,Intellisense(自动完成系统)不会考虑它,除非您手动重新加载它(使用Ctrl+Shift+R)。您的查询是正确的,一旦Intellisense更新,错误将消失。要添加到这个答案中,SSMS中的对象资源管理器很可能根本不同步。尝试刷新表格(右键单击,刷新;或点击顶部的刷新按钮)。或者它显示了一个不同的数据库/服务器,其中您有一个不同的模式。而且
=null
将始终为false。您的意思必须是为null
。还可以看到,我有点让这个查询alter table Customer_Record add Employee_ID int外键引用Employee(Employee_ID),在对象浏览器上,它显示Employee_ID有一个外键,我已经死了,我错过了它。正如@lc所建议的,这可能是一个智能问题。尝试按Ctrl+Shift+R来重新加载它。运行该语句时是否确实收到错误?从所附图像看,Intellisense似乎无法识别该列,但它应该运行。它运行时,没有错误,但它有扭曲的红线,尽管当我悬停时表示该列无效,正如@Ndech在下面所说的,这可能是Intellisense缓存问题,请使用Ctrl+Shift+R刷新缓存。或者,在创建表并对其进行修改之后,在select语句之前,将语句GO
放入查询中