23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
1

Столбец недопустим в списке выбора

07.02.2019, 18:00. Показов 3671. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте подскажите, пожалуйста как исправить ошибку:
"Столбец "students.ID" недопустим в списке выбора"?
SQL
1
2
3
4
5
6
7
SELECT *, marks.ID, marks.mark
FROM students
JOIN marks ON students.ID = marks.student_id
JOIN subjects_semestr ON subjects_semestr.ID=marks.subject_semestr_id
JOIN semestr ON semestr.ID = subjects_semestr.semestr_id
WHERE semestr.name='1'
HAVING COUNT(marks.student_id)>2
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2019, 18:00
Ответы с готовыми решениями:

Столбец недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
Доброго времени суток! Помогите плиз с запросом, недавно работаю с SQL, помощь просто необходима....

Столбец недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY
Добрый день. isnull((select isnull(sum(com.com_qty),0) com_qty from kmd_com where...

Столбец "dbo.Seasontickets.ID" недопустим в списке выбора, поскольку он не содержится в агрегатной функции
Всем доброго времени суток. есть таблица TableName: ID int client_id int start_date date...

Отбор в списке выбора
Как сделать чтоб, программа давала возможность выбрать только одину из двух КОНКРЕТНЫХ записей....

11
5388 / 4316 / 1060
Регистрация: 29.08.2013
Сообщений: 27,098
Записей в блоге: 3
08.02.2019, 09:36 2
7 строка лишняя
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
08.02.2019, 15:56  [ТС] 3
Цитата Сообщение от qwertehok Посмотреть сообщение
7 строка лишняя
нет, нужны студенты только у которых более 2 оценок
если 7 строку заменить на:
SQL
1
2
GROUP BY students.ID
HAVING COUNT(students.ID)>2
ошибка остаётся
0
Модератор
4215 / 3056 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
08.02.2019, 16:00 4
Цитата Сообщение от HitGirl Посмотреть сообщение
нужны студенты только у которых более 2 оценок
HAVING отсекает лишние группы. Поскольку группы создает GROUP BY, то HAVING без него неприменим.
Кстати, к какой таблице относится * в списке SELECT ?
1
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
08.02.2019, 16:46  [ТС] 5
Цитата Сообщение от Grossmeister Посмотреть сообщение
Кстати, к какой таблице относится * в списке SELECT ?
students
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
CREATE TABLE subjects
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [name] VARCHAR(50) NOT NULL,
    hours INT NOT NULL
);
CREATE TABLE semestr
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [name] VARCHAR(50) NOT NULL
);
CREATE TABLE students
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    surname VARCHAR(50) NOT NULL,
    Birthday DATE,
    KURS INT NOT NULL DEFAULT 1
);
GO
CREATE TABLE subjects_semestr
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    semestr_id INT NOT NULL,
    subject_id INT NOT NULL,
    CONSTRAINT semestr_id_fk
    FOREIGN KEY(semestr_id)
    REFERENCES semestr(ID),
    CONSTRAINT subject_id_fk
    FOREIGN KEY(subject_id)
    REFERENCES subjects(ID)
);
 
CREATE TABLE marks
(
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    student_id INT NOT NULL,
    subject_semestr_id INT NOT NULL,
    mark INT NOT NULL,
    CONSTRAINT subject_semestr_id_fk
    FOREIGN KEY(subject_semestr_id)
    REFERENCES subjects_semestr(ID),
    CONSTRAINT student_id_fk
    FOREIGN KEY(student_id)
    REFERENCES subjects(ID)
);
0
Модератор
4215 / 3056 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
08.02.2019, 16:56 6
Цитата Сообщение от HitGirl Посмотреть сообщение
students
У тебя в запросе несколько таблиц. Откуда СУБД должна узнать твои мысли по поводу students?
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
08.02.2019, 17:30  [ТС] 7
Цитата Сообщение от Grossmeister Посмотреть сообщение
Откуда СУБД должна узнать твои мысли по поводу students?
ключевое слово from
Изменил первую строку на:
SQL
1
SELECT students.ID,students.surname, marks.ID, marks.mark
ошибка осталась
0
5388 / 4316 / 1060
Регистрация: 29.08.2013
Сообщений: 27,098
Записей в блоге: 3
08.02.2019, 19:58 8
а в group by эти колонки добавил?
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
08.02.2019, 20:07  [ТС] 9
Цитата Сообщение от qwertehok Посмотреть сообщение
а в group by эти колонки добавил?
Если указать в select и group by колонки: students.ID,students.surname, marks.ID, marks.mark
получается следующий результат:
IDsurnamemark_idmark
1Альшаков14
1Альшаков25
1Альшаков34
2Мельников53
2Мельников65
3Васнецов84
3Васнецов95
4Лебедев104
Но если ещё добавить
SQL
1
HAVING COUNT(students.ID)>2
результат запроса пустой
0
5388 / 4316 / 1060
Регистрация: 29.08.2013
Сообщений: 27,098
Записей в блоге: 3
08.02.2019, 22:23 10
но ведь сами оценки тебе не нужны, тебе нужны только студенты
убери оценки из Select и group by
1
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
09.02.2019, 18:39  [ТС] 11
Цитата Сообщение от qwertehok Посмотреть сообщение
тебе нужны только студенты
студенты и оценки
почему с оценками не работает?
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,077
09.02.2019, 20:42 12
Цитата Сообщение от HitGirl Посмотреть сообщение
почему с оценками не работает?
Потому что не понимаете, что такое группировка.
T-SQL
1
2
3
4
5
6
7
8
9
10
with t as
(
 SELECT *, marks.ID, marks.mark, count(*) over (partition by marks.student_id) as cnt
 FROM students
 JOIN marks ON students.ID = marks.student_id
 JOIN subjects_semestr ON subjects_semestr.ID=marks.subject_semestr_id
 JOIN semestr ON semestr.ID = subjects_semestr.semestr_id
 WHERE semestr.name='1'
)
select * from t where cnt > 2;
1
09.02.2019, 20:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2019, 20:42
Помогаю со студенческими работами здесь

Пропал Windows 7 в списке выбора ОС
История такова,послушал я нехороших людей и решил всё таки установить вместо семерки ХР,установил...

Цветные линии в списке выбора
Мне надо реализовать вываливающийся список (CCombo) для выбора цвета в VC++. Как мне сделать,...

Событие выбора значение в списке
Добрый день! Как в excel VBA повесить событие на несколько одинаковых списков, а затем когда в...

Неизвестный столбец в списке полей
Всем привет. Прошу совета. Выполняю запрос на зачисление монет пользователю, своеобразная валюта на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru