【问题标题】:SQL JOIN error in vb.netvb.net 中的 SQL JOIN 错误
【发布时间】:2012-06-15 13:38:59
【问题描述】:

我有这个 sql 字符串:

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() "

我想要做的是:我想将表“food”中的值“FName”键入一个文本框,其中表“category”的“ID”字段为 1。

我有 3 张桌子。第一个是餐桌食品,第二个是餐桌类别,第三个是 foodCategory。 表 foodCategory 具有从前 2 个表到一对多关系的 ID。 我收到以下错误:JOIN 附近的语法不正确。 我做错了什么?

【问题讨论】:

    标签: sql sql-server-2008 vb.net-2010


    【解决方案1】:

    这可能是你的串联:

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

    将评估为

    foodCategory.Food_IDJOIN category
    

    【讨论】:

      【解决方案2】:

      您的查询不正确,JOIN 必须在 FROM 子句中设置,而不是在 WHERE 子句中。

      【讨论】:

        【解决方案3】:

        试试下面的查询

        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() "
        

        此外,您应该查看 Parameter,因为您的代码很容易受到 SQL 注入的影响!

        【讨论】:

        • “和”不是必须的。否则代码有效。也感谢关于 sql 注入的警告!
        【解决方案4】:

        您的 JOIN 必须在 WHERE 子句之前:

         " 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() ";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-27
          • 2016-04-10
          • 2018-05-04
          • 2013-06-07
          相关资源
          最近更新 更多