При запросе в 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 Метки нет (Все метки)
Что такого зловещего в этом ?
0 |
minob 3543 / 1117 / 94 Регистрация: 13.03.2011 Сообщений: 1,513 |
||||||||
07.04.2012, 21:12 |
2 |
|||||||
Что такого зловещего в этом ? Ничего, кроме того, что операция INTERSECT не поддерживается JET SQL.
Если еще требуется, чтобы в результат запроса входил 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 |
А как реализовать JOIN, тоесть вывод нескольких колонок из разных таблиц? Не превращая это в декартово-произведение, а именно как соединение. Так JOIN таблиц всегда отличается от их декартова произведения.
0 |
DarkDiabolik 3 / 3 / 0 Регистрация: 22.02.2010 Сообщений: 52 |
||||
08.04.2012, 11:01 [ТС] |
5 |
|||
Пояснение было сделано с целью оградиться от умельцев, которые бы предложили вариант
0 |
3543 / 1117 / 94 Регистрация: 13.03.2011 Сообщений: 1,513 |
|
08.04.2012, 12:15 |
6 |
В отличие от многих СУБД, где в INNER JOIN первое слово INNER может быть опущено, в Access такое не проходит.
0 |
7334 / 4475 / 288 Регистрация: 12.08.2011 Сообщений: 13,551 |
|
09.04.2012, 07:27 |
7 |
вывод нескольких колонок Не по теме: чего только нет в таблицах, пора конкурс устраивать на обзывание полей
0 |
oleggy 7 / 7 / 0 Регистрация: 14.03.2013 Сообщений: 231 |
||||
05.10.2017, 14:48 |
8 |
|||
Ребята прошу подскажите в чем ошибка, пытаюсь в MS Access сохранить запрос, но офис ругается «Ошибка синтаксиса в предложении FROM», и подсвечивает DELETE
Хочу создать копию таблицы, просто нужно удалить элемент по критерию, но т.к. в исходной таблице удалить его не получается (возможно потому что у нее есть ключевое поле через которое связано с другой таблицей).
0 |
mobile 26784 / 14463 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
05.10.2017, 14:52 |
9 |
|||
В одном исполняемом запросе может быть только одно действие — либо создание таблицы, либо удаление записей. Но в Вашем случае можно просто не допускать в новую таблицу ненужные данные и ограничиться одним запросом
1 |
7 / 7 / 0 Регистрация: 14.03.2013 Сообщений: 231 |
|
05.10.2017, 15:06 |
10 |
Понял, а правильно ли я понял что в исходной таблице не удается удалить запись (Ошибка MS Access — нарушение уникальности ключа) потому что у этой таблице есть ключевое поле которое связано с другой таблицей?
0 |
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 |
Просто весь сыр-бор был из-за того что из таблицы Студент я не мог удалить запись. Выдавало сообщение: Из за чего тогда была ошибка поясните?
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
05.10.2017, 15:42 |
Помогаю со студенческими работами здесь Ошибка синтаксиса
Создаю вот запрос в ВБА, ругается на синтаксис последней строчки с условиями WHERE,… Ошибка синтаксиса ошибка синтаксиса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 12 |