1

私はこの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」からテーブル「category」の「ID」フィールドが1であるテキストボックスに値「FName」を入力したい.

私は3つのテーブルを持っています。1 つ目はテーブル フード、2 つ目はテーブル カテゴリ、3 つ目は foodCategory です。テーブル foodCategory には、最初の 2 つのテーブルから 1 対多の関係への ID があります。次のエラーが表示されます: JOIN 付近の構文が正しくありません。私は何を間違っていますか?

4

4 に答える 4

3

クエリが正しくありません。JOIN は、WHERE 句ではなく、FROM 句内で設定する必要があります。

于 2012-06-12T16:19:40.243 に答える
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 インジェクションに対して非常に脆弱であるため、 Parameterを確認する必要があります。

于 2012-06-12T16:20:45.390 に答える
0

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() ";
于 2012-06-12T16:23:26.090 に答える
0

それはおそらくあなたの連結です:

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

に評価します

foodCategory.Food_IDJOIN category
于 2012-06-12T16:19:29.853 に答える