Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Недопустимое имя столбца помогите решить SQL

Арсен Гаджиев Ученик (146), открыт 1 неделю назад
Вот мой код
CREATE DATABASE бибика
CREATE TABLE Firms
(
FirmID INT PRIMARY KEY,
FirmName VARCHAR (100) NOT NULL,
);
INSERT INTO Firms (FirmName) VALUES ('Toyota');
INSERT INTO Firms (FirmName) VALUES ('Ford');
INSERT INTO Firms (FirmName) VALUES ('BMW');
INSERT INTO Firms (FirmName) VALUES ('Mercedes');
INSERT INTO Firms (FirmName) VALUES ('Audi');

CREATE TABLE Cars
(
CarID INT PRIMARY KEY,
FirmID INT,
Model VARCHAR(100) NOT NULL,
Price DECIMAl(10,2) NOT NULL, FOREIGN KEY(FirmID) REFERENCES Firms(FirmID),
);
INSERT INTO Cars (FirmID, Model, Price) VALUES (1, 'Camry', 250000);
INSERT INTO Cars (FirmID, Model, Price) VALUES (1, 'Corolla', 200000);
INSERT INTO Cars (FirmID, Model, Price) VALUES (2, 'Focus', 220000);
INSERT INTO Cars (FirmID, Model, Price) VALUES (3, 'X5', 400000);
INSERT INTO Cars (FirmID, Model, Price) VALUES (4, 'C-Class', 350000);
INSERT INTO Cars (FirmID, Model, Price) VALUES (5, 'A4', 300000);

CREATE TABLE Managers
(
ManagerID INT PRIMARY KEY,
LastName VARCHAR(100) NOT NULL,
FirstName VARCHAR(100),
MiddleName VARCHAR(100),
);
INSERT INTO Managers (LastName, FirstName, MiddleName) VALUES ('Иванов', 'Иван', 'Иванович');
INSERT INTO Managers (LastName, FirstName, MiddleName) VALUES ('Петров', 'Петр', 'Петрович');

CREATE TABLE Clients
(
ClientID INT PRIMARY KEY,
ClientName INT,
PassportSeries VARCHAR(100),
PassportNumber INT,
Adress VARCHAR(100),
CarID INT,
ManagerID INT,
SaleDate DATE NOT NULL, FOREIGN KEY (CarID) REFERENCES Cars (CarID),
FOREIGN KEY (ManagerID) REFERENCES Managers(ManagerID), FOREIGN KEY(ClientID) REFERENCES Clients(ClientID)
);
INSERT INTO Clients (ClientName, PassportSeries, PassportNumber, Adress) VALUES ('Петров Алексей Петрович','45 01', '345677', 'г. Москва, ул. Ленина, д. 5');


(
SaleID INT PRIMARY KEY,
CarID INT,
ManagerID INT,
ClientID INT,
SaleDate DATE NOT NULL, FOREIGN KEY (CarID) REFERENCES Cars(CarID), FOREIGN KEY (ManagerID) REFERENCES Managers(ManagerID), FOREIGN KEY (ClientID) REFERENCES Clients(ClientID)
);
INSERT INTO Sales (CarID, ManagerID, ClientID, SaleDate) VALUES (1, 1, 1, '2023-01-15');
INSERT INTO Sales (CarID, ManagerID, ClientID, SaleDate) VALUES (2, 2, 2, '2023-02-20');
Сама ошибка :
Сообщение 207, уровень 16, состояние 1, строка 49
Недопустимое имя столбца "ClientName".
Сообщение 207, уровень 16, состояние 1, строка 49
Недопустимое имя столбца "PassportSeries".
1 ответ
Diloniy Профи (522) 1 неделю назад
Ошибка возникает из-за нескольких проблем в вашем SQL-коде:

1. Основная ошибка: вы пытаетесь вставить данные в столбец `ClientName` таблицы `Clients`, но при создании таблицы этот столбец объявлен как INT, а вы пытаетесь вставить строку.

Исправленный код:

```sql
CREATE TABLE Clients
(
ClientID INT PRIMARY KEY,
ClientName VARCHAR(100), -- Изменено с INT на VARCHAR
PassportSeries VARCHAR(100),
PassportNumber INT,
Adress VARCHAR(100),
CarID INT,
ManagerID INT,
SaleDate DATE NOT NULL,
FOREIGN KEY (CarID) REFERENCES Cars (CarID),
FOREIGN KEY (ManagerID) REFERENCES Managers(ManagerID)
);
```

2. Дополнительные проблемы:
- У вас есть лишняя запятая после определения столбцов в нескольких таблицах
- В таблице Clients есть некорректная ссылка на саму себя (FOREIGN KEY(ClientID) REFERENCES Clients(ClientID))
- В конце кода есть отдельное определение таблицы Sales без CREATE TABLE

3. Исправленный INSERT для Clients:
```sql
INSERT INTO Clients (ClientID, ClientName, PassportSeries, PassportNumber, Adress)
VALUES (1, 'Петров Алексей Петрович','45 01', 345677, 'г. Москва, ул. Ленина, д. 5');
```

Основные исправления:
- Изменил тип ClientName с INT на VARCHAR
- Удалил лишнюю ссылку FOREIGN KEY
- Добавил ClientID в INSERT
- Убрал лишние запятые после определения столбцов

После этих исправлений ваш код должен работать корректно.
ПапаВысший разум (153231) 1 неделю назад
Советы тупой нейросети даже рядом не стоят с исправлением действительных ошибок.
Похожие вопросы