2016-12-18 3 views
0

Что может быть неправильным в этом заявление? Я получаю сообщение об ошибке неправильный синтаксис рядом с 'А'.неправильный синтаксис рядом с 'А'

Поскольку я больше привык писать запросы в postgreSQL, я предполагаю, что MySQL имеет немного другой синтаксис.

cmd.CommandText = "WITH CurrentStop AS (SELECT[Stop Id] FROM Stops WHERE[Route Id] = " + 
        routeId + "AND Serial = " + stopsDriven + ")" + 
        "SELECT A.Firstname, A.Lastname, B.Make, B.Capacity, B.Route, D.Name" + 
        "FROM Driver A, Bus B, CurrentStop C, Stop D" + 
        "WHERE A.Id = " + row[0] + "AND B.[Bus Id] = " + row[1] + "AND C.[Stop Id] = D.[Stop Id]"; 

Кстати, все входы находятся в системе, поэтому SQL-инъекция не может произойти.

+2

MySQL не поддерживает общие выражения таблиц. –

+0

Я собирался дать вам рабочий запрос, в котором CTE был встроен в ваш основной запрос, но ваши условия соединения не имеют смысла, и в основном вы, кажется, перекрещиваетесь с таблицами вместе - вероятно, не то, что вы хотите, или в чем проблема. –

+0

@TimBiegeleisen Мне нужно выбрать только одну строку, поэтому для каждой таблицы я даю первичный ключ в предложении WHERE. Однако это может быть неправильно. Необходимо дважды проверить, что – Unknown

ответ

0

Распечатайте запрос, прежде чем пытаться его выполнить и внимательно изучить. Это решает большой фрагмент «что случилось с моим динамически сгенерированным запросом»? которые мы видим здесь.

Например, я бы с осторожностью из-за отсутствия пространства между (не обязательно исчерпывающий перечень, это только те, которые я заметил):

  • routeId и следующие AND;
  • row[0] и следующие AND;
  • row[1] и следующие AND;
  • D.Name и следующие FROM; и
  • Stop D и следующие WHERE.

Те два последних, безусловно, проблематично, так как, в то время как это возможные переменные могут закончиться в пространстве (хотя необычно), фиксированные строки конечно нет. И оба могут вызывать определенную ошибку, которую вы видите, так как они выходят как:

D.NameFROM Driver A 
Stop DWHERE A. 
Смежные вопросы