0

この質問に対する答えを実装しようとしました。答えはうまくいきましたが、テーブルORDER BYの列の句を実装していないことがわかりました(列が実際に存在することを確認しました)。しかし、私はそれを機能させることができません。これが私の問題です。これは機能します:orderqrgame_place

sql = '''SELECT P.id, (TP.id IS NOT NULL) AS done
FROM qrgame_place P
LEFT OUTER JOIN qrgame_team_places TP
ON P.id = TP.place_id AND TP.team_id = %s
WHERE P.game_id = %s
'''

しかし、これはしません:

sql = '''SELECT P.id, (TP.id IS NOT NULL) AS done
FROM qrgame_place P
LEFT OUTER JOIN qrgame_team_places TP
ON P.id = TP.place_id AND TP.team_id = %s
WHERE P.game_id = %s
ORDER BY P.order ASC
'''

の場所を変更しようとしましたORDER BYが、役に立ちません。

テンプレートでDjangoが私に与えているエラーは次のとおりです。

Exception Type:     DatabaseError
Exception Value:    near "order": syntax error

SQL言語について理解していないことは何ですか?

4

3 に答える 3

0

注文はSELECTにないため、それで注文することはできません。

出力リストに追加します

sql = '''SELECT P.id, (TP.id IS NOT NULL) AS done, P.order
FROM qrgame_place P
LEFT OUTER JOIN qrgame_team_places TP
ON P.id = TP.place_id AND TP.team_id = %s
WHERE P.game_id = %s
ORDER BY P.order ASC
'''

または、id や done などの別の列で並べ替える

于 2013-04-13T20:09:01.057 に答える
0

私が以前に自分自身を捕まえたはずだった問題(doh)はorder、もちろん予約済みのキーワードi SQLであり、それがsqliteでSYNTAX ERRORを書いたとしてもP.order、本番サーバーのMySQLが私に与えたとは思わない何か問題(?)があります。しかし、これはうまくいくようです:

sql = '''SELECT P.id, (TP.id IS NOT NULL) AS done, P.`order` as ord
FROM qrgame_place P
LEFT OUTER JOIN qrgame_team_places TP
ON P.id = TP.place_id AND TP.team_id = %s
WHERE P.game_id = %s
ORDER BY ord
'''

orderクエリの最初の行を囲む特殊文字を確認します。P.order を選択せず​​、ORDER BY 行でこのように呼び出すこともできます (私は信じています)。しかし、私は他のアンサーを聞いて、それを含めるだけです。

MySQL と SQLite はこれを取ります。他のDBについては不明です。

于 2013-04-13T20:50:09.290 に答える
-1

ORDER BY は出力をソートします。並べ替えようとしているフィールドが出力にないため、ステートメントは無効です。

于 2013-04-13T20:09:45.340 に答える