| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > SQL запрос |
| Автор: simanyay 3.1.2003, 03:00 |
| Привет. Я тут делаю небольшую базу в MS Access и столкнулся с вот такой проблемой - я написал мелкий запрос: SELECT name FROM t_tests WHERE teacher IN ( SELECT name FROM t_users WHERE login = "anton" // Логин Антон лишь образно. Он будет ); // определятся пользователем Так вот, выходит ошибка, типа несоответствия типов. В Oracle (8i) всё проходит, а вот в Access P.S. Пробовал ставить вместо IN = тоже самое получается P.S.P.S. Когда тоже стану "опытным товарищем" обещаю помогать новичкам |
| Автор: simanyay 3.1.2003, 03:02 |
| Упс... я перепутал комментарии из С. Кстати, а есть в SQL коментарии? |
| Автор: Vit 3.1.2003, 06:07 |
| Вроде формально всё правильно. 2 замечания: 1) Двойные кавычки иногда надо заменять одинарными 2) Коментарии в SQL обычно: -- Это строковый комментарий /* Это блок коментариев */ Но это зависит от диалекта SQL - иногда могут быть и другие форматы или эти не поддерживаться. |
| Автор: AntonSaburov 4.1.2003, 22:38 |
| Надо посмотреть, что за типы TEACHER в таблице t_test NAME в таблице t_users Насколько они совместимы ? Хотя может быть все из-за убогости самого MS Access - он очень упрощенный - а на убогих как известно ... Но по идее все правильно написано. |
| Автор: simanyay 5.1.2003, 05:07 |
| И всё таки это была убогость Access. Потом я создал этот же запрос визуально, т.е. с помощью мастера (до этого я всё писал вручную - недолюбливаю чрезмерную визуальность) и всё прокатило, хотя запрос был на 100% одинаковый. Вот так. Ну всё равно спасибо, что помогли. |
| Автор: U-gene 5.1.2003, 18:19 |
| Что-то с трудом вериться Почему мне кажется, что беда не в Акцессе? Да потому, что результатом работы визуального конструктора является SQL-выражение, которое потом выплняется ядром MS Jet. Из визуального конструктора запросов (и из ручного тоже)в ядро передается ТОЛЬКО SQL-выражение, и ничто другое. Поэтому, когда Вы говорите, что запрос, сделанный в визуальном конструкторе, "точно такой-же" как и запрос введенный вручную, но первый работает, а второй - нет, то я сильно сомеваюсь - значит он точно не "точно такой же" и содержит ошибки. |
| Автор: Medved 6.1.2003, 01:46 |
| AntonSaburov правильон сказал, если возникает ошибка несоответствия типов, то смотри: что за типы TEACHER в таблице t_test NAME в таблице t_users Насколько они совместимы ? |
| Автор: Oleg 11.1.2003, 03:31 |
| А может быть при использовании визуальных средств Аксес включает автоконвертеры типов котроые устанавливают равновесие. Но ты на всякий случай сравни SQL, полученный и бывший. Даже точечки и запятые. За это я Access и ненавижу. |
| Автор: Гость_konstantin 13.11.2005, 15:32 |
| SELECT name FROM t_tests WHERE teacher IN ( SELECT name FROM t_users WHERE login = "anton" // Логин Антон лишь образно. Он будет ); // определятся пользователем Не правильно написан модуль - в предложении WHERE внешнего запроса имя столбца должно быть одинаковым с именем столбца после SELECT внутреннего запроса. Вместо teacher - name.Такой модуль как сейчас не будет работать нигде.Нет связи между запросами и Access ругается - "несоответствие типов полей". |