sql
  • sql-server-2008
  • vb.net-2010
  • 2012-06-12 3 views 1 likes 
    1

    У меня есть эта строка SQL:SQL JOIN ошибку в vb.net

    Dim sqlQuery As String = "SELECT TOP 1 ID, FName, FoodGroup, Calories, Protein, Carbohydrates, Fat, category.ID" & 
         " FROM food where Protein<='" & txtProt.Text.ToString() & "' and FoodGroup = 4 " & "and category.ID = 1 " & "JOIN foodCategory ON food.ID = foodCategory.Food_ID" & "JOIN category ON foodCategory.Category_ID = category.ID " & "ORDER BY NEWID() " 
    

    Что я хочу сделать это: Я хочу, чтобы ввести значение «имя_файла» из таблицы «пищи» к TextBox, где Поле «ID» таблицы «категория» равно 1.

    У меня есть 3 стола. Первый - это столовая еда, вторая - таблица, а третья - foodCategory. Таблица foodCategory имеет идентификаторы от первых 2 таблиц до отношения «один ко многим». Я получаю следующую ошибку: Неправильный синтаксис рядом с JOIN. Что я делаю неправильно?

    ответ

    3

    вашего запрос неверен, стыки должны быть установлены в ЕКЕ, а не в ИНЕКЕ.

    +0

    Спасибо большое. Я должен был увидеть это ... – Pantheo

    0

    Это, вероятно, ваша конкатенация:

    ... foodCategory.Food_ID" & "JOIN category ... 
    

    будет вычисляться

    foodCategory.Food_IDJOIN category 
    
    1

    Попробуйте следующий запрос

    dim sqlQuery As String 
    sqlQuery = "SELECT TOP 1 ID, FName, FoodGroup, Calories, Protein, " & _ 
          "Carbohydrates, Fat, category.ID " &_ 
          "FROM food JOIN foodCategory ON " & _ 
          "food.ID = foodCategory.Food_ID JOIN category ON " & _ 
          "foodCategory.Category_ID = category.ID " & _ 
          "where Protein<='" & txtProt.Text.ToString() & "' and " & _ 
          "FoodGroup = 4 and category.ID = 1 " & _ 
          "ORDER BY NEWID() " 
    

    Кроме того, вы должны смотреть на Параметр, как ваш код очень уязвимы для инъекций SQL!

    +0

    этот запрос неверен, вы не можете присоединиться к таблицам в where where. –

    +0

    ah thx, только что увидел ошибку в копии и вставки –

    +0

    «и» не нужно. в противном случае код работает. Спасибо за предупреждение о SQL-инъекции! – Pantheo

    0

    Ваш РЕГИСТРИРУЙТЕСЬ должен быть перед ИНЕКЕ:

    " FROM food" & " JOIN foodCategory ON food.ID = foodCategory.Food_ID" & "JOIN category ON  foodCategory.Category_ID = category.ID " & " WHERE Protein<='" & txtProt.Text.ToString() & "' and FoodGroup = 4 " & "and category.ID = 1 " & " ORDER BY NEWID() "; 
    

     Смежные вопросы

    • Нет связанных вопросов^_^