Что такое ошибка синтаксиса в предложении from

При запросе в Access 2016, наблюдаю сообщение «Ошибка синтаксиса в предложении FROM». Вот такой запрос:

SELECT Table1.indexObject, Table1.ObjectNames, table2.measureCommFromTab, table3.izmerenije, max(table3.datetimeMess)
FROM Table1, table2, table3
ON (table2.keyID = table3.measureComm_id) and (Table1.keyID = table3.indexObjectsTab_id)
WHERE table2.keyID>0 And indexObject In (55296, 55226)
GROUP BY table2.measureCommFromTab, Table1.indexObject
ORDER BY Table1.indexObject

Подскажите, в чем может быть ошибка? Есть нюансы при использовании Access? Дело в том, что этот же запрос, в SQLite нормально работает…
Возможно необходимо прописать Джоин?


  • Вопрос задан

    более трёх лет назад

  • 3359 просмотров

Пригласить эксперта

условия , перечисленные после ON перенесите в блок после WHERE , получится

SELECT Table1.indexObject, Table1.ObjectNames, table2.measureCommFromTab, table3.izmerenije, max(table3.datetimeMess)
FROM Table1, table2, table3
WHERE   (table2.keyID = table3.measureComm_id) and (Table1.keyID = table3.indexObjectsTab_id) and
table2.keyID>0 And indexObject In (55296, 55226)
GROUP BY table2.measureCommFromTab, Table1.indexObject
ORDER BY Table1.indexObject

если обьединение таблиц указывается не через JOIN , а перечислением после FROM ,
то выражение ON не применяется, а условия обьединения перечисляются наряду с условиями фильтрования записей в блоке WHERE.


  • Показать ещё
    Загружается…

11 июн. 2023, в 22:53

1800 руб./за проект

11 июн. 2023, в 20:03

300 руб./за проект

11 июн. 2023, в 19:12

50000 руб./за проект

Минуточку внимания

what i decided to do is to use 2 different queries:

$consulta=  "SELECT * FROM Dept INNER JOIN Userinfo 
         ON Userinfo.Deptid = Dept.Deptid
         where Dept.DeptName = '$departamento'";

and

$consulta2 = "SELECT  *  FROM Checkinout, Userinfo
    where Checkinout.Userid = '$userid' AND  Userinfo.userid = '$userid' AND 
    Checkinout.Checktime BETWEEN CDate('$fecha1') AND CDate('$fecha2')"; 

The first one to select all the people that belong to one deparment, and the second one to find all the INs and OUTs of one person. Both in a while to be able to look each register of the first result and check with the other query


still have problems with the search, its not working fine, im trying to do a full query where it searchs in the 3 tables at the same time but its giving me a error:

$toda_consulta= "SELECT * 
                     FROM Dept 
                     INNER JOIN Userinfo ON (Dept.Deptid = Userinfo.Deptid)
                     INNER JOIN Checkinout ON (Checkinout.Userid = Userinfo.Userid)
                     WHERE Dept.DeptName = '$departamento' AND 
                           Checkinout.Checktime BETWEEN CDate('$fecha_inicio') AND CDate('$fecha_fin')";

error: Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Controlador ODBC Microsoft Access] sintax error (missing operator) in the expression '(Dept.Deptid = Userinfo.Deptid) INNER JOIN Checkinout ON (Checkinout.Userid = Userinfo.Userid)'., SQL state 37000 in SQLExecDirect in C:wampwwwcasa 7-9-13calcula_departamento1.php on line 51

than you for your help

Do you in fact have a STUDENT table? You refer to both STUDENT and LSTUDENT in your SELECT, but only use STUDENT in the FROM clause. Which one is it?

Also, at a minimum, you need to quote the content of your WHERE condition.

ADOQuery1.SQL.Add ('WHERE SEKSYEN = ' + QuotedStr(ComboBox2.Text));

Much better though would be to stop concatenating SQL in your code, and use parameterized queries instead. It’s not only much safer against SQL injection, but it allows the database engine to compile and cache the query content, making it execute much more quickly if you’re using the same statement more than one time with different parameter values.

procedure TForm9.Button1Click(Sender: TObject);
begin
  ADOQuery1.Close;

  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT DAT20303.NUM, DAT20303.NAMA, DAT20303.MATRIC_ID,');
  ADOQuery1.SQL.Add('DAT20303.SUBJEK, DAT20303.M1, DAT20303.M2, DAT20303.M3,');   
  ADOQuery1.SQL.Add('DAT20303.M4, DAT20303.M5, DAT20303.M6,');    
  ADOQuery1.SQL.Add('DAT20303.M7, STUDENT.SEKSYEN, LSTUDENT.MATRIC_ID');
  ADOQuery1.SQL.Add ('FROM STUDENT');
  ADOQuery1.SQL.Add ('JOIN DAT20303');
  ADOQuery1.SQL.Add ('ON DAT20303.MATRIC_ID = STUDENT.MATRIC_ID');
  ADOQuery1.SQL.Add ('WHERE SEKSYEN = :SekSyen');
  ADOQuery1.Parameters.ParamByName('SekSyen').AsString := ComboBox1.Text;
  ADOQuery1.Open; {open query + display data}
end;

And please don’t be afraid to use whitespace (spaces and line breaks) to make your SQL more readable! I’ve cleaned it up somewhat in my answer to do so. When it’s easier to read, it’s easier to understand (and maintain later).

Всем успешного дня!

Пытаюсь сделать выборку из MS Access в c#, при этои появляется «Ошибка синтаксиса в предложении From».
В чем может быть дело?

В Access «свой» синтаксис создания запросов?

       OleDbConnection oleConn = new OleDbConnection();
            
            try
            {
                
                oleConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + dbFilePath;
                oleConn.Open();                
                
                String selectQuery = "SELECT * FROM rates ";                

                OleDbDataAdapter da = new OleDbDataAdapter();
                da.SelectCommand = new OleDbCommand(selectQuery, oleConn);

                DataSet ds = new DataSet();
                da.Fill(ds);

                this.dataGridView1.DataSource = ds.DefaultViewManager;               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                oleConn.Close();
                oleConn.Dispose();
            }

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:

А>Какая ошибка?

«Ошибка синтаксиса в предложении From»

Здравствуйте, Аноним, Вы писали:

А>Всем успешного дня!


А>Пытаюсь сделать выборку из MS Access в c#, при этои появляется «Ошибка синтаксиса в предложении From».

А>В чем может быть дело?

Скорее всего в БД не существует таблица rates или нужно убрать пробел в конце запроса.

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Аноним, Вы писали:

А>>Какая ошибка?

А>»Ошибка синтаксиса в предложении From»

Попробовал использовать ваш код — у меня ошибки не происходит. Может проблемы в драйверах БД(тех, что Provider=Microsoft.Jet.OLEDB.4.0)??
Есть возможность проверить проект на другой машине?

Здравствуйте, anton_t, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


А>>Всем успешного дня!


А>>Пытаюсь сделать выборку из MS Access в c#, при этои появляется «Ошибка синтаксиса в предложении From».

А>>В чем может быть дело?

_>Скорее всего в БД не существует таблица rates или нужно убрать пробел в конце запроса.

Оказалось все гораздо проще:
Наименование таблицы в запросе должно быть взято в квадратные скобки:
String selectQuery = «SELECT * FROM [rates] «;

Connection в данном случае не надо ни открывать, ни закрывать. Адаптер сделает это самостоятельно

DarkDiabolik

3 / 3 / 0

Регистрация: 22.02.2010

Сообщений: 52

1

07.04.2012, 18:47. Показов 5913. Ответов 11

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

SQL
1
2
3
SELECT date1 FROM comments
INTERSECT 
SELECT date1 FROM news;

Что такого зловещего в этом ?



0



minob

3543 / 1117 / 94

Регистрация: 13.03.2011

Сообщений: 1,513

07.04.2012, 21:12

2

Цитата
Сообщение от DarkDiabolik
Посмотреть сообщение

Что такого зловещего в этом ?

Ничего, кроме того, что операция INTERSECT не поддерживается JET SQL.
Аналогом вашему запросу может послужить запрос

T-SQL
1
2
SELECT DISTINCT comments.date1
FROM comments INNER JOIN news ON comments.date1=news.date1

Если еще требуется, чтобы в результат запроса входил Null, если он встречается в обеих таблицах, то добавьте в условие

T-SQL
1
 Or comments.date1 & news.date1 Is Null



1



3 / 3 / 0

Регистрация: 22.02.2010

Сообщений: 52

07.04.2012, 21:17

 [ТС]

3

А как реализовать JOIN, тоесть вывод нескольких колонок из разных таблиц? Не превращая это в декартово-произведение, а именно как соединение.



0



3543 / 1117 / 94

Регистрация: 13.03.2011

Сообщений: 1,513

07.04.2012, 21:34

4

Цитата
Сообщение от DarkDiabolik
Посмотреть сообщение

А как реализовать JOIN, тоесть вывод нескольких колонок из разных таблиц? Не превращая это в декартово-произведение, а именно как соединение.

Так JOIN таблиц всегда отличается от их декартова произведения.
Попробуйте по другому задать вопрос, возможно с примером.



0



DarkDiabolik

3 / 3 / 0

Регистрация: 22.02.2010

Сообщений: 52

08.04.2012, 11:01

 [ТС]

5

Пояснение было сделано с целью оградиться от умельцев, которые бы предложили вариант

SQL
1
SELECT t1.cl1,t2.cl2 FROM t1,t2;



0



3543 / 1117 / 94

Регистрация: 13.03.2011

Сообщений: 1,513

08.04.2012, 12:15

6

В отличие от многих СУБД, где в INNER JOIN первое слово INNER может быть опущено, в Access такое не проходит.



0



Эксперт MS Access

7334 / 4475 / 288

Регистрация: 12.08.2011

Сообщений: 13,551

09.04.2012, 07:27

7

Цитата
Сообщение от DarkDiabolik
Посмотреть сообщение

вывод нескольких колонок

Не по теме:

чего только нет в таблицах, пора конкурс устраивать на обзывание полей



0



oleggy

7 / 7 / 0

Регистрация: 14.03.2013

Сообщений: 231

05.10.2017, 14:48

8

Ребята прошу подскажите в чем ошибка, пытаюсь в MS Access сохранить запрос, но офис ругается «Ошибка синтаксиса в предложении FROM», и подсвечивает DELETE

SQL
1
2
3
4
5
SELECT * INTO Таблица1
FROM Таблица
DELETE *
FROM Таблица1
WHERE Номер='111';

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



0



mobile

Эксперт MS Access

26784 / 14463 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

05.10.2017, 14:52

9

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

SQL
1
2
3
SELECT * INTO Студент1
FROM Студент
WHERE Номер <> '16693';



1



7 / 7 / 0

Регистрация: 14.03.2013

Сообщений: 231

05.10.2017, 15:06

10

Понял, а правильно ли я понял что в исходной таблице не удается удалить запись (Ошибка MS Access — нарушение уникальности ключа) потому что у этой таблице есть ключевое поле которое связано с другой таблицей?
Поэтому и приходится для демонстрации DELETE выполнять его в несвязанной таблице.



0



Эксперт MS Access

26784 / 14463 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

05.10.2017, 15:33

11

Не понял при чем здесь нарушение уникальности ключа, если Вы хотите удалять запись?

Если попытка удалить запись делается в таблице на стороне «один», а в связанной таблице на стороне «много» есть связанные записи, то при заданном свойстве «Обеспечение целостности данных», Jet SQL конечно не даст удалить запись в мастер-таблице. Если только не задано каскадное удаление связанных записей. А если задано, то джет удалит и в мастер и в чилд-таблицах без разговоров



0



7 / 7 / 0

Регистрация: 14.03.2013

Сообщений: 231

05.10.2017, 15:42

12

Просто весь сыр-бор был из-за того что из таблицы Студент я не мог удалить запись. Выдавало сообщение:
«Приложению «Microsoft Access» не удалось удалить следующее число записей в запросе на удаление: из-за нарушения уникальности ключа — 1 и из-за нарушения блокировки — 0″.
Сама таблица Студент имела ключевое поле и имела связь 1:1 с другой таблицей.

Из за чего тогда была ошибка поясните?



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

05.10.2017, 15:42

Помогаю со студенческими работами здесь

Ошибка синтаксиса
Здравствуйте!
Пытаюсь экспортировать данные в базу MS Access, подключаюсь к mdf через OleDB и…

Ошибка синтаксиса
Добрый день!

Создаю вот запрос в ВБА, ругается на синтаксис последней строчки с условиями WHERE,…

Ошибка синтаксиса
Всем привет только начал осваивать PHP столкнулся с проблемой в строке ругается на синтаксическую…

ошибка синтаксиса
Добрый день. Существует форма, в которой при выборе сотрудника из выпадающего списка необходимо…

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

Или воспользуйтесь поиском по форуму:

12

Возможно, вам также будет интересно:

  • Что такое ошибка синтаксиса в майнкрафте
  • Что такое ошибка сети при скачивания игр
  • Что такое ошибка сети при скачивании файла
  • Что такое ошибка сети при загрузке
  • Что такое ошибка сети код 400

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии