|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Коллеги, я пытаюсь делать выборку - по "фамилии" сотрудника нахожу его "должность" из таблицы "сотрудники", далее по "должности" вывожу список курсов из таблицы "Курсы". Вложенный запрос является скалярным - выдает только одно значение ("должность") Вот весь текст: SELECT Курсы.[Код курса], (SELECT Сотрудники.Должность FROM Сотрудники WHERE Сотрудники.Фамилия ='Ильин') FROM Курсы, Сотрудники WHERE InStr(1,Курсы.[Обучаемый состав].Value,Сотрудники.Должность); Access ругается - "...запрос содержит неоднозначные внешние соединения. Для явного указания соединения, выполнемого первым, создайте отдельный запрос и включите его в инструкцию SQL". В чем ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 17:44 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
niog, InStr возвращает длинное целое и какие записи, по Вашему, должен вернуть запрос при таком условии ...WHERE 2 +связь между "курсы" и "сотрудники" покажите базу(или таблицы) и Вам быстро помогут ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 18:22 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
sdku, А вот, как ни странно, но при всем непонимании ТС-ом, как применять результат функции, работать это его выражение будет, как задумано им. То есть, будут выбраны записи, имеющие в поле [Обучаемый состав] заданную [Должность]. Произойдет это потому, что любое положительное число неявно трактуется как True, а 0 - как False. Значит, WHERE 2 "равносильно" WHERE True. Основная же ошибка ТС в том, что он полагает, что если ему известно, что "вложенный запрос выдает только одно значение", то и Jet ему сразу поверит на слово. Нет. Об этом следует сообщить предикатом Top. SELECT Top 1 Сотрудники.Должность FROM Сотрудники WHERE Сотрудники.Фамилия ='Ильин' ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2017, 19:44 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Коллеги, выложил БД: https://yadi.sk/d/J8CPHlVO38jUqF Фамилия 'Ильин' нужная для отработки, далее запрос будет выводить поле для ввода фамилии ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 11:05 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
__Michelle, Все равно не работает, требует ввод должности сотрудника: SELECT Курсы.[Код курса], (SELECT Top 1 Сотрудники.Должность FROM Сотрудники WHERE Сотрудники.Фамилия = 'Ильин') As ФамилияСотр FROM Курсы WHERE InStr(1,Курсы.[Обучаемый состав].Value,Сотрудники.Должность) = TRUE ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 11:31 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
О боже... использование таблицы Сотрудники началось и закончилось в подзапросе. Откуда WHERE может взять значение Сотрудники.Должность? И что это за бред: Код: sql 1.
Судя по всему, нужно такое: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 11:39 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, не работает Access ругается - невозможно выполнить инструкцию SQL, так как запрос содержит неоднозначные внешние соединения ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 12:20 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, А это: (SELECT ... Сотрудники.Должность ... ) As ФамилияСотр Чтобы заголовок столбца был "ФамилияСотр" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 12:24 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
niogAccess ругаетсяНу а кто заставлял делать такую кривую структуру? Облегчение себе жизни использованием поля с мультивыбором - верный путь к большому геморрою. Что мы и наблюдаем. Нормализуйте структуру, и всё станет элементарно. niogЧтобы заголовок столбца был "ФамилияСотр"... а содержал должность... класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 12:52 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, Я понимаю как структуру нормализовать? Да, в таблице Курсы у меня мультивыбор из значений столбца другой таблицы. Если по другому делать, то это в таблице Курсы указывать каждый раз один и тот же код курса, название и т.п. с разницей тлько в поле обучаемый состав. Есть еще вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 13:15 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Стандартная реализация связи много-ко-много требует трёх таблиц: таблица данных, таблица справочник, таблица связей. У тебя сейчас реализована такая схема, но с использованием инструмента "для домохозяек". И как итог - отсутствие доступа к внутренней "кухне", который тебе нужен. PS. А ещё в БД должна быть схема данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 13:19 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, Спасибо большое. Подскажи пожалуйста: Таблица справочник - это список должностей Таблица данных - это список сотрудников Таблица связей - что это? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 13:54 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
niogТаблица связей - что это? Таблица с 2 полями (ИД_сотрудника, ИД_должности). Ключ - объединение этих полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:00 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, А меня в таблице "Сотрудники" есть его Табельный номер, ФИО, и должность (выбирается из таблицы "Список должностей"). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:07 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Вот схема БД ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:14 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
niogВот схема БДУгу... а таблица "Курсы" висит в воздухе. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:21 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, Я сейчас ее прикрепил, но это не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:33 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
niog, не то прикрепил ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:35 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
А ещё у Вас и в таблице сотрудников поле должности является полем подстановки. И потому видите-то Вы названия должностей, а значение поля - это значение первого, скрытого, поля, которое "связанное поле", а там число (конкретно для этого Ильина - 16). И сравнивать мультитекст (или при .Value - строку) и это число немножко бессмысленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 14:43 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Akina, Я Вас понял, но как только я убираю в таблице "Сотрудники" в столбце "Должность" убираю "Должности.Код" и оставляю для выбора "Должности.Название", то у меня в таблице "Сотрудники" вообще пропадает список для выбора должности. А как тогда из таблицы сотрудники выцепить название должности? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:05 |
|
В чем ошибка в подзапросе?
|
|||
---|---|---|---|
#18+
Вы построили свою БД так, чтобы было удобно работать с данными непосредственно в ТАБЛИЦАХ. Именно это и есть источник всех проблем. Потому как данные в таблицах ХРАНЯТСЯ. Для их ввода и изменения существуют формы, для вывода - формы и отчёты. И все эти поля подстановки, мультиполя и прочее надо срочно, пока не поздно, убирать нафиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2017, 15:33 |
|
|
start [/forum/topic.php?fid=45&tid=1612811]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
108ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 344ms |
total: | 541ms |
0 / 0 |