Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询错误:列名无效_Sql_Sql Server - Fatal编程技术网

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),

我是SQL新手,我有这个问题,我似乎无法在谷歌上搜索。 这是我的作业,所以请耐心对待我的编码。 现在的问题是,我正在执行select查询,而SQL似乎无法识别我需要的列

这里是一个附加的图片,它只是说无效列,但很明显,该列存在

这是完整的代码

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
放入查询中GO将查询分解为它能够理解的批。我建议您放弃旧式联接,开始在tableA.col1=tableB.col2上使用SQL92标准内部联接tableB。看见