powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В чем ошибка в подзапросе?
22 сообщений из 22, страница 1 из 1
В чем ошибка в подзапросе?
    #39383423
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, я пытаюсь делать выборку - по "фамилии" сотрудника нахожу его "должность" из таблицы "сотрудники", далее по "должности" вывожу список курсов из таблицы "Курсы". Вложенный запрос является скалярным - выдает только одно значение ("должность")

Вот весь текст:
SELECT Курсы.[Код курса],
(SELECT Сотрудники.Должность
FROM Сотрудники
WHERE Сотрудники.Фамилия ='Ильин')
FROM Курсы, Сотрудники
WHERE InStr(1,Курсы.[Обучаемый состав].Value,Сотрудники.Должность);

Access ругается - "...запрос содержит неоднозначные внешние соединения. Для явного указания соединения, выполнемого первым, создайте отдельный запрос и включите его в инструкцию SQL". В чем ошибка?
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383468
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niog,
InStr возвращает длинное целое и какие записи, по Вашему, должен вернуть запрос при таком условии
...WHERE 2
+связь между "курсы" и "сотрудники"
покажите базу(или таблицы) и Вам быстро помогут
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383555
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

А вот, как ни странно, но при всем непонимании ТС-ом, как применять результат функции,
работать это его выражение будет, как задумано им.
То есть, будут выбраны записи, имеющие в поле [Обучаемый состав] заданную [Должность].
Произойдет это потому, что любое положительное число неявно трактуется как True, а 0 - как False.
Значит, WHERE 2 "равносильно" WHERE True.

Основная же ошибка ТС в том, что он полагает,
что если ему известно, что "вложенный запрос выдает только одно значение",
то и Jet ему сразу поверит на слово.
Нет. Об этом следует сообщить предикатом Top.
SELECT Top 1 Сотрудники.Должность
FROM Сотрудники
WHERE Сотрудники.Фамилия ='Ильин'
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383881
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, выложил БД:
https://yadi.sk/d/J8CPHlVO38jUqF

Фамилия 'Ильин' нужная для отработки, далее запрос будет выводить поле для ввода фамилии
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383921
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
Все равно не работает, требует ввод должности сотрудника:
SELECT Курсы.[Код курса], (SELECT Top 1 Сотрудники.Должность
FROM Сотрудники
WHERE Сотрудники.Фамилия = 'Ильин') As ФамилияСотр
FROM Курсы
WHERE InStr(1,Курсы.[Обучаемый состав].Value,Сотрудники.Должность) = TRUE
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383932
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О боже... использование таблицы Сотрудники началось и закончилось в подзапросе. Откуда WHERE может взять значение Сотрудники.Должность?

И что это за бред:
Код: sql
1.
(SELECT ... Сотрудники.Должность ... ) As ФамилияСотр



Судя по всему, нужно такое:
Код: sql
1.
2.
3.
4.
SELECT Курсы.[Код курса], Сотрудники.Должность
FROM Курсы, Сотрудники
WHERE Сотрудники.Фамилия = 'Ильин'
  AND InStr(1,Курсы.[Обучаемый состав].Value,Сотрудники.Должность)
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383987
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
не работает Access ругается - невозможно выполнить инструкцию SQL, так как запрос содержит неоднозначные внешние соединения
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39383999
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

А это:
(SELECT ... Сотрудники.Должность ... ) As ФамилияСотр

Чтобы заголовок столбца был "ФамилияСотр"
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384050
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niogAccess ругаетсяНу а кто заставлял делать такую кривую структуру? Облегчение себе жизни использованием поля с мультивыбором - верный путь к большому геморрою. Что мы и наблюдаем. Нормализуйте структуру, и всё станет элементарно.

niogЧтобы заголовок столбца был "ФамилияСотр"... а содержал должность... класс.
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384081
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Я понимаю как структуру нормализовать? Да, в таблице Курсы у меня мультивыбор из значений столбца другой таблицы. Если по другому делать, то это в таблице Курсы указывать каждый раз один и тот же код курса, название и т.п. с разницей тлько в поле обучаемый состав. Есть еще вариант?
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384092
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартная реализация связи много-ко-много требует трёх таблиц: таблица данных, таблица справочник, таблица связей.

У тебя сейчас реализована такая схема, но с использованием инструмента "для домохозяек". И как итог - отсутствие доступа к внутренней "кухне", который тебе нужен.

PS. А ещё в БД должна быть схема данных.
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384147
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Спасибо большое.
Подскажи пожалуйста:
Таблица справочник - это список должностей
Таблица данных - это список сотрудников
Таблица связей - что это?
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384157
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niogТаблица связей - что это?
Таблица с 2 полями (ИД_сотрудника, ИД_должности). Ключ - объединение этих полей.
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384166
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

А меня в таблице "Сотрудники" есть его Табельный номер, ФИО, и должность (выбирается из таблицы "Список должностей").
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384175
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот схема БД
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384186
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niogВот схема БДУгу... а таблица "Курсы" висит в воздухе.
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384199
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Я сейчас ее прикрепил, но это не помогло
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384201
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
niog,

не то прикрепил
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384214
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё у Вас и в таблице сотрудников поле должности является полем подстановки. И потому видите-то Вы названия должностей, а значение поля - это значение первого, скрытого, поля, которое "связанное поле", а там число (конкретно для этого Ильина - 16). И сравнивать мультитекст (или при .Value - строку) и это число немножко бессмысленно.
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384235
niog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Я Вас понял, но как только я убираю в таблице "Сотрудники" в столбце "Должность" убираю "Должности.Код" и оставляю для выбора "Должности.Название", то у меня в таблице "Сотрудники" вообще пропадает список для выбора должности.

А как тогда из таблицы сотрудники выцепить название должности?
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384278
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы построили свою БД так, чтобы было удобно работать с данными непосредственно в ТАБЛИЦАХ. Именно это и есть источник всех проблем. Потому как данные в таблицах ХРАНЯТСЯ. Для их ввода и изменения существуют формы, для вывода - формы и отчёты. И все эти поля подстановки, мультиполя и прочее надо срочно, пока не поздно, убирать нафиг.
...
Рейтинг: 0 / 0
В чем ошибка в подзапросе?
    #39384601
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую примерно такую структуру. С ней Ваш запрос(и многие последующие)легко создаются
естессно формы для справочников не делал. Короче-посмотрите
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В чем ошибка в подзапросе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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