2016-12-18 12 views
0

これで間違っている可能性がありますを選択しますか? というエラーが発生し、 'A'の構文が正しくありません。'A'の近くの構文が正しくありません

私は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 1つの行だけを選択する必要があるので、テーブルごとにWHERE句で主キーを与えています。しかし、どこかで間違っているかもしれません。 – Unknown

答えて

0

実行する前に、クエリを印刷して詳細に調べます。これは、「動的に生成されたクエリで何が問題になるのですか?」という大きなチャンクを解決します。私たちがここで見るスタイルの質問です。

例えば、私は間のスペースの不足を警戒するだろう(必ずしも完全なリストで、これらは私が気づいただけのものです):

  • routeIdと、次のAND
  • row[0]およびそれに続くAND;
  • row[1]およびそれに続くAND;
  • D.Nameおよびそれに続くFROM;
  • Stop Dおよび以下のものが挙げられる。WHERE。それは可能ありながら

これらの最後の二つは、以来、確かに問題があるの変数は、(珍しいが)空間に確かはない固定文字列を終了してもよいです。そして、両方とも、次のように出てくる特定のエラーを引き起こしている可能性があります。

D.NameFROM Driver A 
Stop DWHERE A. 
関連する問題