powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос на выборку. Ошибка "CNT": invalid identifier
13 сообщений из 13, страница 1 из 1
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443751
da3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается создать запрос на выборку людей с тремя руководителями. И так и сяк пробовал - ругается по разному. Подскажите, где кавычки или скобки не поставил, пожалуйста. Oracle SQL developer

Код: plaintext
1.
2.
3.
4.
5.
Select Artist.Famil_art, Impressario.Famil, Ganry.Nazv_g, Count (Impressario.ID_IMP) as cnt from Artist
inner join Ganry_Artist on Ganry_Artist.ID_ART=Artist.ID_ART
inner join Ganry on Ganry.ID_ganr=Ganry_Artist.ID_ganr
inner join Impressario_Artist on Artist.ID_ART=Impressario_Artist.ID_ART
inner join Impressario on Impressario_Artist.ID_IMP=Impressario.ID_IMP
GROUP BY Famil having cnt='3'
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443753
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443763
da3d,

такое бывает, когда придумываешь свой синтаксис ....

во-первых, если запрос с группировкой, то все поля SELECT-листа должны быть или в предложении GROUP BY, или под действием агрегатной функции... у тебя Famil в GROUP BY, Impressario.ID_IMP - под агрегатной функцией. а что делать с Artist.Famil_art и Ganry.Nazv_g - ты серверу не объяснил...

во-вторых, алиас выражения из SELECT-листа на этом же уровне вложенности запроса доступен к использованию ТОЛЬКО в предложении ORDER BY. А ты пытаешься использовать CNT в HAVING
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443765
da3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

поменял на это.

SELECT Artist.FAMIL_ART,
Impressario.FAMIL,
Ganry.NAZV_G
FROM Artist
INNER JOIN Ganry_Artist
ON Ganry_Artist.ID_ART = Artist.ID_ART
INNER JOIN Ganry
ON Ganry.ID_GANR = Ganry_Artist.ID_GANR
INNER JOIN Impressario_Artist
ON Artist.ID_ART = Impressario_Artist.ID_ART
INNER JOIN Impressario
ON Impressario_Artist.ID_IMP = Impressario.ID_IMP
GROUP BY Artist.FAMIL_ART,
Impressario.FAMIL,
Ganry.NAZV_G
where COUNT(Impressario.ID_IMP) = 3


К сожалению, не выдает ничего, пока не выберешь единицу.
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443766
da3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс, вместо where стоит having
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443767
da3d,

чего спросил, то тебе сервер и ответил. если данных, удовлетворяющих запросу нет, сервер ничего и не возвращает...
если результат не соответствует твоим ожиданиям, то это твои проблемы, а не сервера.
если не можешь составить правильный запрос и требуется помощь окружающих - то приведи описание таблиц, тестовый набор данных, желаемый результат и логику его получения.
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39443768
da3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Есть таблицы артист, жанры, импресарио. Между ними пару связующих таблицы - артист жанры (в каких жанрах актер играет) и импресарио_артист (с кем работает артист).
Требуется выдать какие артисты имеют ровно 3 импресарио в распоряжении и выдать с жанрами, и фамилиями обоих. Таких артистов двое - 1 и 3. Еще какая-то информация нужна?
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39444664
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da3d,
- приведи хорошо оформленный запрос с with из dual
- покажи что ты делаешь
- получи волну дерьма в свою сторону
- получи правильное решение от серого ника или от dbms_photoshop
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39444774
Gы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
da3dДобрый Э - Эх,

поменял на это.

SELECT Artist.FAMIL_ART,
Impressario.FAMIL,
Ganry.NAZV_G
FROM Artist
INNER JOIN Ganry_Artist
ON Ganry_Artist.ID_ART = Artist.ID_ART
INNER JOIN Ganry
ON Ganry.ID_GANR = Ganry_Artist.ID_GANR
INNER JOIN Impressario_Artist
ON Artist.ID_ART = Impressario_Artist.ID_ART
INNER JOIN Impressario
ON Impressario_Artist.ID_IMP = Impressario.ID_IMP
GROUP BY Artist.FAMIL_ART,
Impressario.FAMIL,
Ganry.NAZV_G
where COUNT(Impressario.ID_IMP) = 3

К сожалению, не выдает ничего, пока не выберешь единицу.

А как он может что-то другое выдавать, если твой запрос выводит ТОЛЬКО одного имрессарио в каждой строке вывода? То есть в твоём запросе колонка COUNT(Impressario.ID_IMP) по умолчанию (из-за набора колонок в GROUP BY) может иметь только значение 1.
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39444776
лабораторная?
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39445700
da3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курсовая.
Про строки - понятное дело, что только одного. Но нам нужны только артисты, у которых 3 импресарио. Фамилии импресарио здесь нужны для того, чтобы показать, что так и есть, у данного артиста 3 руководителя. Понятное дело, что в одной строке три значения не может быть. Для этого и сделал несколько таблиц составных.
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39448681
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da3d,

ох уж эти студенты =)

1. запусти
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT Artist.FAMIL_ART,
Impressario.FAMIL,
Ganry.NAZV_G
FROM Artist
INNER JOIN Ganry_Artist
ON Ganry_Artist.ID_ART = Artist.ID_ART
INNER JOIN Ganry
ON Ganry.ID_GANR = Ganry_Artist.ID_GANR
INNER JOIN Impressario_Artist
ON Artist.ID_ART = Impressario_Artist.ID_ART
INNER JOIN Impressario
ON Impressario_Artist.ID_IMP = Impressario.ID_IMP


и посчитай сколько записей для твоих ожидаемых артистов (каждая из таблиц может их умножить)

2. проверь ID для всех таблиц - выведи и посчитай

очень похоже что тебе надо having COUNT(distinct Impressario.ID_IMP) = 3
...
Рейтинг: 0 / 0
Запрос на выборку. Ошибка "CNT": invalid identifier
    #39448687
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da3d,

т.к. тестовых данных ты не предоставил это заглядывание в магический шар
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос на выборку. Ошибка "CNT": invalid identifier
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]