错误:第 91 行附近:“RESULTS”附近:语法错误

时间:2020-12-23 08:44:21

标签: sql sql-server tsql

我需要打印一个运动员名单,看起来像:“运动员的名字”在“城市”显示结果“结果”。

有桌子

CREATE TABLE COMPETITION
(
    ID INT IDENTITY,
    COMPETITION_NAME CHAR(30),
    WORLD_RECORD CHAR(30),
    SET_DATE VARCHAR(20)
)
GO

CREATE TABLE RESULTS
(
    SPORTSMAN_ID INT,
    RESULT VARCHAR(20),
    CITY VARCHAR(20),
    HOLD_DATE CHAR(20)
)
GO

CREATE TABLE SPORTSMAN
(
    SPORTSMAN_ID INT IDENTITY,
    SPORTSMAN_NAME CHAR(30),
    [RANK] VARCHAR(10),
    YEAR_OF_BIRTH CHAR(20),
    PERSONAL_RECORD VARCHAR(30),
    COUNTRY CHAR(20)
);

INSERT INTO COMPETITION
VALUES
(21,'Первенство школы по ОФП', NULL, '1665'),
(14,'Весенние старты', 'Ангелина Мерзкая', '20-26 апреля'),
(42,'Первенство России', 'Юлия Склизкая', '26 апреля-02 мая'),
(25,'Первенство школы', 'Сергей Безруков', '8-10 мая'),
(12,'Кубок России', 'Валентин Рикунов', '14-21 мая'),
(13,'Гонки с пересадкой', 'Алексей Ширяев', '17-20 мая'),
(15,'Микро', 'Василий Шевченко', '30 мая-03 июня'),
(24,'Парусная регата', 'Максим Храмцов', '09-13 июня'),
(23,'Паруса России', 'Максим Двоеглвзов', '11-12 июня'),
(22,'Чемпионат России','Артем Цицаренко', '11-15 июля'),
(20,'Первенство Липецка', 'Александр Косолапов', '13-14 июля'),
(19,'Первенство СДЮСШОР10', 'Мария Недорезова', '13-14 июля '),
(17,'Кубок Европы', 'Владислав Мирнов', '14-18 июля'),
(16,'Первенство России 2013', '12', '1969');

INSERT INTO RESULTS
VALUES
(15, '1-ое место', 'г.Липецк', '27 января'),
(24, '2-ое место', 'г.Геленджик', '20-26 апреля'),
(35, '3-ое место', 'г.Таганрог', '26 апреля-02 мая'),
(12, '2-ое место', 'г.Липецк', '8-10 мая'),
(7, '4-ое место', 'г.Сочи', '14-21 мая '),
(8, '1-ое место', 'г.Липецк', '17-20 мая '),
(3, '3-ое место', 'г.Сочи', '30 мая-03 июня'),
(23, '4-ое место', 'Псковская обл.', '09-13 июня'),
(13, '2-ое место', 'г.Липецк', '11-12 июня'),
(9, '1-ое место', 'г.Липецк', '11-15 июля'),
(6, '4-ое место', 'г.Липецк', '13-14 июля '),
(5, '3-ое место', 'г. Тольятти', '13-14 июля '),
(2, '4-ое место', 'г.Липецк', '14-18 июля '),
(11, '3-ое место', 'г. Москва', '12-18 августа');

INSERT INTO SPORTSMAN
VALUES
(15, 'Ангелина', '2', '1991', '4 часа', 'Russia'),
(24, 'Юлия','3', '1990', '3 часа', 'UK'),
(35, 'Сергей', '3', '1990', '3 часа', 'Russia'),
(12, 'Валентин', '2', '1993', '2 часа', 'USA'),
(7, 'Алексей', '1', '1992', '1 час', 'Russia'),
(8, 'Василий', '3', '1991', '1 час', 'UK'),
(3, 'Максим', '1', '1994', '4 часа', 'Russia'),
(23, 'Максим', '2', '1993', '3 часа', 'USA'),
(13, 'Артем', '3', '1990', '2 часа', 'Sweden'),
(9, 'Александр', '2', '1991', '1 час', 'Great Britain'),
(6, 'Мария', '3', '1992', '2 часа', 'Sweden'),
(5, 'Владислав', '2', '1994', '2 часа', 'Great Britain'),
(2, 'Сергей', '3', '1942', '2 часа', 'USA'); 

这是命令:

SELECT SPORTSMAN.SPORTSMAN_NAME "showed the result" RESULTS.RESULT "at" RESULTS.CITY
FROM SPORTSMAN,RESULTS;

它打印此错误:

<块引用>

错误:第 91 行附近:“RESULTS”附近:语法错误

当我之前放空格时问题没有解决;已接任务 来自http://www.itmathrepetitor.ru/43-zadachi-po-sql/。任务编号 26。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试联接 2 个表,但缺少联接条件(并且正在使用过时的联接样式)。您还在字符串定义中使用双引号而不是单引号。而且您没有做任何事情来连接它们 (+)。

SELECT S.SPORTSMAN_NAME + ' showed the result ' + R.RESULT + ' at ' + RESULTS.CITY
FROM SPORTSMAN S
INNER JOIN RESULTS R on R.SPORTSMAN_ID = S.SPORTSMAN_ID;

注意别名的使用,以避免每次都必须完整地写出表名。

顺便说一句,您应该始终明确指定要插入的列名,作为插入语句的一部分。这样可以避免在修改表时破坏 SQL。